최근 운영체제 스터디를 하는 중에 스터디원의 추천으로 괜찮은 강의로 스터디를 하게되서 이 강의와 공룡책 등 다양한 자료들로 공부하면서 운영체제에 대한 정리를 하려고 합니다.
부족한 정리일 수도 있고 잘못된 내용이 들어갈 수도 있지만 개인 공부를 기록한다는 느낌으로 시작해보려구요!
file : 정보들, 리눅스, 유닉스에서는 I/O Device도 file로 취급한다.
부팅 시 커널이 올라오고 그 다음 쉘이 올라온다.
쉘은 키보드에서 커맨드를 칠 때까지 기다리고 커맨드를 입력하면 맞는 유틸리티를 데려온다.
리눅스
윈도우
멀티 프로세스일때 다른 프로세스가 메모리를 침범하지 못하도록 해야한다.
CPU를 가지고 연산 시에 다른 메모리를 침범하지 못하도록 커널에 I/O를 요청하도록 하는데 이를 System Call 이라한다.
I/O 작업 등의 사용자 모드에서 일어날 수 없는 일을 처리하기 위해 요청하는 행위
CPU에는 mode bit 라는 이진 비트가 있는데 이때 mode 는 값에 따라서 사용자 모드, 커널 모드로 나뉜다.
커널 모드인 경우는 모든 메모리와 코드에 접근이 가능하다.
유저 모드인 경우는 로컬 메모리와 op-code를 일부 제한 ( I/O 작업 등 )하여 접근이 가능하다.
이때 로컬 메모리라는 것은 해당 프로그램이 가지고 있는 메모리를 의미한다.
User Mode | Kernel Mode | |
---|---|---|
memory | 프로세스의 로컬 메모리 | 전체 접근 |
op-code | 제한된 코드의 실행 | 어떤 코드여도 실행 |
제한된 op-code : I/O 작업, 특별한 레지스터 작업(?)
a. 로컬 메모리로의 접근이라면 접근을 허용한다.
b. 로컬 메모리가 아니라면 Trap을 발생 시킨다.
c. Trap이 발생되면 mode가 커널모드로 전환되고 해당 시스템콜을 처리할 수 있는 함수를 찾아 처리한다.
d. 처리 된 후에는 다시 mode가 사용자 모드로 전환된다.
a. 컴파일러가 코드를 컴파일하고 코드가 실행된다.
a. 코드 내부에는 Trap을 발생시키는 코드(chmodk)와 해당 코드의 시스템콜 번호가 들어있다.
b. CPU를 반환하고 현재 프로세스의 상태를 저장한다.
c. Trap이 발생하고 다시 mode가 커널 모드로 전환된다.
d. Trap을 Trap Handler 내부의 dispatch table에서 필요한 작업을 찾아 처리한다.
SystemCall은 UserMode에서 수행할 수 없는 작업이 발생했을 시에 호출되어 mode의 전환이 일어나고 이때 KernelMode로 들어가 작업을 처리하도록 요청하는 행위이다.
고건 교수님 강의
https://olc.kr/course/course_online_view.jsp?id=35&cid=51
[운영체제] 유저모드와 커널모드에 대해서.
https://blockdmask.tistory.com/69
Operation System - OS.운영체제
https://probe29.tistory.com/18
System Call이란?
https://ju-hy.tistory.com/8
운영체제 04 : 시스템 콜 (시스템 호출, System Call)
https://luckyyowu.tistory.com/133