Chapter 1
운영체제의 정의, 구성 요소, 작업
교수님 피셜) 거의 컴퓨터구조론 내용에 대한 review, 그냥 교양 느낌으로 봐라
OS는
resource allocator: H/W, S/W 등의 자원을 배분하는 역할을 한다.
control program: 시스템에 치명적인 영향을 줄 수 있는 작업을 방지한다.
Ex) 무한루프 -> 자원을 무한정 사용, 운영체제나 다른 프로세스의 메모리 영역 침범
Trap: Software interrupt - syscall과 관련이 있다.
Multiprocess
여러 개의 프로세스가 있다.
각 프로세스에는 독자적인 Register와 Cache가 있다.
Memory는 System bus를 통해 공유한다. -> 바틀랙? 바틀랩?? 몇 번을 들어도 뭔지 모르겠다.
중요한 내용) 운영체제 구조
Multiprogramming(Batch system)
https://t0pli.tistory.com/169 첫 부분
여러 개의 job이 메모리에 올라오고 OS가 job들 간의 CPU 할당을 전환해준다.
어느 job이 CPU나 I/O를 점유하면 그 job이 반납할 때까지 기다려야 됨
-> 사용자와 interaction이 필요한 경우에는 부적합하다
Timesharing(Multitasking)
일정 시간(아주 짧은 시간, TQ: Time quantum)이 지나면 다른 job에게 자원을 넘겨 줌
(process가 자원을 스스로 반납할 때까지 기다리지 않는다)
Windows나 Linux도 이거임
Process 개념이 등장,
Scheduling
ⓐ Job scheduling
사용자가 Job을 submission하면 그 중 일부만 메모리에 올리게 됨: 어느 job을 메모리에 올릴 것인가?
ⓑ CPU scheduling
메모리에 올라와 있는 프로세스 중 어느 프로세스에게 CPU를 할당할 것인가?
Multiprogramming과 Timesharing의 차이점을 이해하자
Interrupt
Trap: 0으로 나누거나, Stack overflow,
Syscall 시 Trap 발생 -> 운영체제가 대신 사용자가 요청한 syscall 수행
: 사용자가 H/W에 접근하면 문제가 생길 수도 있음
Dual-mode execution: 여러 개(여기서는 두 개)의 모드를 갖고 실행: User mode / Kernel mode
하드웨어의 Mode bit을 통해 모드 구분
Timer: 일정 시간 후 interrupt
Chapter 2
System call은 번호로 관리됨 -> 번호 table에서 내가 호출한 syscall에 해당하는 번호를 찾음
이 번호는 운영체제가 갖고 있다(syscall table)
Syscall table: syscall 번호에 해당하는 kernel function의 함수 포인터 정보를 포함함.
① System call(User mode)
② Syscall table에서 해당하는 번호의 함수 포인터 검색(Kernel mode)
③ 그 포인터의 kernel function 호출(Kernel mode)
④ 다시 User mode
OS Structure
MS-DOS
Application에서 ROM BIOS device에 직접 접근할 수 있어서 프로그램을 잘못 만들면 전체 시스템이 다운됨
UNIX
System programs
System call
Syscall interface to the kernel
Kernel
Kernel interface to the hardware
Hardware
필요에 따라 Kernel에 기능이 포함되어 있음(약간 주먹구구)
Layered apporach
계층을 나눔(최하위 계층은 H/W, 최상위 계층은 UI)
N Layer에서 N-1 Layer로 접근 가능, N-2 Layer로 접근 불가능
-> 디버깅이 쉽다: N Layer에 문제가 있다면 N Layer 만 보면 됨
OS를 계층을 정확히 나누기가 어렵다
느리고, 메모리도 많이 먹음: N에서 N-3로 접근하려면 무조건 N-1과 N-2를 거쳐야 하니까
Microkernel
Kernel의 대부분을 User space로 뺌 -> Kernel이 컴팩트해진다. + 다른 Architecture로 porting도 쉽고 더 reliable함
대신 overhead가 늘어남
Application program과 File system 모두 User space에 있다. 그러나 Application에서 File System에 접근하려면 여전히 OS를 거쳐야 한다.
-> Message passing: 사용자 프로세스가 kernel로 message로 보내고
그 message를 예전에는 Kernel에 있던 서비스로 보내 요청함
-> 중간 절차가 늘어 속도가 느려짐
Modules
Ubuntu, Cent OS 등
Loadable kernel module: OS는 그대로 동작하는 상태에서, 필요한 module을 OS 동적으로 넣고 뺀다.
중요한 기능을 module로 만들어 필요한 건 넣고 필요없는 건 뺄 수 있다 -> Compact해진다.
Layered apporach에서 기능에 따라 계층을 나눈 것 처럼 기능에 따라 module을 나눔
Microkernel과 달리 Message passing 없이 module 간에 직접 API 호출이 가능해 overhead가 더 적다.
System call
운영체제가 제공하는 서비스를 호출하기 위한 programming interface
'강의노트 > 운영체제' 카테고리의 다른 글
[운영체제] 3주차: Thread (0) | 2021.03.23 |
---|---|
[운영체제] 3주차: Review (2) (0) | 2021.03.22 |
[운영체제] 2주차 (3) (0) | 2021.03.14 |
[운영체제] 2주차 (2) (0) | 2021.03.13 |
[운영체제] 2주차 (1) (0) | 2021.03.12 |