본문 바로가기
Computer Science

[Operating System] Shell과 System Call: Prompt, POSIX

by Henry Cho 2022. 3. 4.
728x90

Shell과 System Call: Prompt, POSIX


포스트 난이도: HOO_Middle

 

[Notice] 포스트 난이도에 대한 설명

안녕하세요, HOOAI의 Henry입니다. Bro들의 질문에 대한 내용을 우선적으로 포스팅이 되다 보니 각각의 포스트에 대한 난이도가 달라서 난이도에 대한 부분을 작성하면 좋겠다는 의견을 들었습니다

whoishoo.tistory.com


 

# Shell

Shell(쉘)과 System call(시스템 호출)은 다른 목적으로 사용되는 기능이다.

우선 Shell은 사용자와 Operating system 간의 Command line Interface 역할을 수행한다.

현재는 다양한 종류의 Shell이 존재하고 있다.

  • . sh
  • . csh
  • . bash

GUI 또한 또 다른 하나의 Interface 역할을 수행할 수 있다.

예를 들면 Windows Explorer가 GUI interface에 해당한다.


# Prompt

Prompt는 하나의 Character로써 사용자에게 명령이 받아들일 때까지 기다리라는 의미를 가지고 있다.

대표적인 예로는,

$ for bash

% for csh

등이 있다.


# System Calls

System calls는 사용자 프로그램과 Operating system 간의 Programming interface 역할을 수행한다.

한마디로 user program이 OS에 접근하여 Kernel 안에서 OS 기능을 실행하는 것을 의미한다.

System calls는 11가지 단계를 거치게 된다.

예를 들어 System call이 read(fd, buffer, nbytes)를 한다고 가정한다면,

  • Step 1-3: Push parameters nbytes, &buffer, fd
  • Step 4: Call the library procedure read
  • Step 5: The library procedure put a code for read in register
  • Step 6: Call trap instruction, trap to the kernel
  • Step 7: The kernel locates and dispatches the system call handler via a table of pointers to system call handlers indexed on system call number
  • Step 8: The system call handler runs
  • Step 9: Returns to the user-space library procedure
  • Step 10: The library procedure returns to the user program
  • Step 11: The SP is incremented to clean up the stack

Shell처럼 System calls도 다양한 operating systems interfaces들이 존재한다.


#Portable Operating System Interface

POSIX는 대표적인 이식이 가능한 operating system interface 중에 하나이다.

IEEE에서 표준화되어 있으며, System calls의 API를 정의한다.

또한 Command line shells나 utility interfaces들도 정의하는 것이 POSIX이다.

POSIX가 표준화가 될 수 있는 이유 중 하나는 다양한 OS에서 유지관리가 가능하기 때문이데 Unix, Linux, Window 등에서 가능하다.

한마디로 호환성이 좋아서 다른 OS와도 잘 결합이 된다고 볼 수 있다.

또한 POSIX는 code-level 수준의 이식성을 제공한다는 점에서도 사용이 용이하다.


728x90

댓글