티스토리 뷰
Shell
- Shell은 명령어를 받고 해석하는 prompt를 작동한다. (Shell = Command Line Interpreter)
- 하드웨어와 상호작용을 하고 싶다면 kernel을 이용해야 하며, kernel을 이용하고 싶다면 system call을 사용해야 한다.
- 로그인 시 사용자 이름과 PW를 입력해야 한다. 사용자 이름은 /etc/passwd에 있다.
- Shell에는 크게 4가지 종류가 있다. C Shell, KornShell, Bourn Shell, Bourn Again Shell(Bash)
File and Directories
- 유닉스에서는 모든 것들을 파일로 간주한다. 정말 모든 것들을 전부 파일로 관리하여 system call을 통합시켰다.
- 유닉스의 파일 시스템은 hierachical하며, 루트(/)에서부터 시작한다.
- 파일 이름에는 '/', '\0'가 들어갈 수 없다.
- 폴더가 생성되면 각각 현재 디렉토리와 상위 디렉토리를 뜻하는 '.', '..' 파일이 자동으로 만들어진다.
- Pathname에는 Absolute pathname과 Relative pathname이 존재한다.
- 모든 process는 working directory를 가진다. Shell에 pwd 명령어를 입력하면 current working directory 경로를 알 수 있다.
- Home directory는 /etc/passwd에 정의되어 있으며, '~' symbol을 가진다.
- 로그인을 한 직후의 working directory는 home directory이다.
Unix File Types
<Regular file>
- Binary or text file이다. Unix는 근데 둘을 구분하지 못한다.
<Directory file>
- 디렉토리 파일이다. (폴더를 파일화 시킨 것)
<Character special and block special file>
- Character special = 키보드 (1바이트씩 전송)
- Block special = 디스크 (4KB씩 전송)
<FIFO (pipe)>
- IPC에 사용한다. (InterProcess Communication)
<Socket>
- 네트워크에 사용한다.
Ownership and Permissions
모든 파일은 소유자와 권한을 가진다. Unix는 멀티유저 시스템이기 때문에 소유자와 권한이 필요하다. 소유자와 superuser만이 권한을 바꿀 수 있다. 권한을 통해 다른 사용자가 내 파일에 접근을 못하게 막을 수 있다.
Unix File Types
mode의 맨 첫번째 자리가 파일 타입을 나타낸다.
EX) drwxrwxr-x에서 d는 해당 파일의 타입
d = directory
l = symbolic link
b = block special file
c = character special file
p = FIFO
- = regular file
s = socket
Process
- 현재 디렉토리의 내용물을 보고 싶다면 ls 커맨드를 쓴다.
- 현재 실행 중인 프로세스를 보고 싶다면 ps 커맨드를 쓴다. (ps만 쓰면 본인이 만든 프로세스만 보이기 때문에 -ef 옵션을 추가해야 한다.)
- IPC에는 Pipe, FIFO, Signals, Shared memory, Semaphore, Sockets 등이 있다.
System call
- System call이 일어나면 mode switch가 2번 일어난다. (부를 때 1번, 결과 받을 때 1번) = 상당히 heavy한 작업- 유저 프로세스가 system call을 호출하면 trap(= interrupt)이 일어나며 커널 프로세스가 system call을 수행하고, 결과값을 유저 프로세스에게 return 해준다.- System call은 전부 헤더 파일 안에 존재한다. System call을 사용하기 위해서는 올바른 헤더를 include 하는 것이 필요하다.
'공부' 카테고리의 다른 글
시스템 프로그래밍 - Modular programming (0) | 2022.10.20 |
---|---|
시스템 프로그래밍 - GCC & GDB 주요 정리 (0) | 2022.10.20 |
Unix programming - 2 (0) | 2022.10.18 |
컴퓨터네트워크 Chapter 15 (0) | 2022.10.11 |
컴퓨터네트워크 Chapter 2 (0) | 2022.10.11 |