티스토리 뷰

공부

Unix Programming - 1

Bluesion 2022. 10. 18. 17:47

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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함