728x90
Terminology
- Kernel: Unix 메모리에 상주(memory resident)하는 C 프로그램
- Utility: command라고도 불리며 디스크에 저장되어 있고 필요할 대 마다 불러옴(loaded on demand)
- Shell: Unix interface to user, read keyboard input & execute command
- file: sequence of bytes, I/O나 통신을 위한 소켓들도 모두 파일이다.
How Kernel-Shell-Untilities are related
- 커널 - 쉘 - 사용자 프로그램의 계층구조
시스템콜
- 유저가 write같은 시스템콜을 요청
- int $0x80이 HW 트랩을 발생시킴
- HW가 CPU의 모드를 user->kernel로 변경
- HW가 trap handler로 jump 이동
- 핸들러는 커널 안의 assembly function을 수행
- 현재의 state vector를 저장
- 유효한 syscall number인지 확인하고 system call table을 참조해 적절한 핸들러의 위치를 찾아 호출한다.
- 유저의 state vector를 복원하고 kernel->user로 변경
Manual
(1) : commnad
(2) : system call
(3) : library functions
Kernel
- 커널은 사용자 프로그램을 support 해주기 위한 프로그램임
- 다른 프로그램과 마찬가지로 자료구조, 함수가 있음
- 프로세스와 하드웨어를 관리함
- 각 프로세서와 하드웨어를 관리하기 위한 Data Structure를 갖고 있음.
fork()
- 부모프로세스의 모든 정보를 복사함
- PCB와 a.out(page table, pointers, ... )
- fork로 생성된 자식은 PID만 다르고 모든 정보가 똑같음.
- 2개의 return
exec()
- disk에서 해당하는 a.out file을 load함
- init a.out(PC가 load한 a.out의 main을 가리키게)
context switch - schedule()
- read, wait, exit
- save current CPU state
- load CPU registers
728x90
'코딩코딩 > 운영체제' 카테고리의 다른 글
[번역] 왜 caller-saved와 callee-saved가 필요할까? (0) | 2022.06.05 |
---|---|
Paging, MLP4, Linux 페이징 (0) | 2022.06.01 |
PCB(Process Control Block) (0) | 2022.05.30 |
쉘이 명령어를 실행시키는 방법 (0) | 2022.05.30 |
댓글