Introduce to OS (2)
위 포스트는 udacity의 Introduce to Operating Systems by Geogia Tech 를 참고하였습니다.
추가로 이 곳 을 참고하였습니다.
1. OS Elements
저번까지는 OS가 무엇인지, 그들이 무슨 역할을 하는 것인지에 대해 알아보았습니다.
이번에는 OS가 무엇으로 이루어져있는지를 알아보도록 하겠습니다.
-
number of high level of Abstraction
-
- process, thread
-
correspond to the applications that the operating system executes
(각각의 프로세스는 OS가 실행할 어플리케이션과 대응됨.)
-
- file, socket, memory page
-
hardware resources들을 추상화한 개념들
-
-
corresponding mechanisms
-
create : application 실행을 명령함.
schedule : application이 실제로 CPU에서 작동하도록 스케쥴링을 함.
-
open : 하드웨어 장치에 접근함.
write : 상태를 업데이트함.
allocate: 특정 어플리케이션이 resource에 접근하게 만들어줌.
-
-
polices
하드웨어를 다루기 위해서 어떻게 mechanism을 사용할지에 대한 합의
ex) 어떤 데이터가 physical memory에서 제거될지 => Least recently uesd
2. OS Elements Example
예시를 통해서 어떻게 OS의 원소들이 동작하는지 알아봅시다.
=> Memory management example
-
추상화 : memory page abstraction
PAGE = Addressable region of memory, fixed size
-
메커니즘 : PAGE를 관리하기위한 방식
-
DRAM(physical memory)에 PAGE를 넣기
-
- PAGE를 특정 프로세스(address piece of process)에 맵핑
-
특정 프로세스와 PAGE가 DRAM을 통해서 대응됨.
-
-
policy
-
메모리에서 데이터에 접근하는게 디스크보다 빠르기 때문에,
페이지를 메모리에 넣을지, 디스크에 넣을지를 정해줘야함.
-
Swapping : 최근에 쓰인 데이터거나, 가까운 미래에 쓰일 일이 없거나, 중요하지 않을 때 메모리에서 페이지를 카피해서 disk에 저장하는 행위
-
3. How to design OS
OS를 디자인하기 위해서 고려해야 할 것들.
Separation of mechanism and policy
-
여러 policy를 활용가능한 유연한 메커니즘을 선택해야함.
-> 메모리를 관리하기 이전에 이런 policy에 대해서 생각해두자.
Optimize for the common case
-
어디에 쓰일 것인가?
-
어떤 기계(장치) 내에서 동작할 것인가?
-
메모리, CPU 필요
(예상되는 workload(표준부하))
4. OS protection boundary
어플리케이션에서 하드웨어 리소스를 관리하기 위해서는 다음과 같은 것들이 필요하다.
-
모드 구분
- User mode - unprevileged mode
- Kernel mode - special previlege mode
- allowed direct hardware access
- modern platform에서는 hardware를 통해서 1<->2를 스위칭 가능함.
-
Previlege bit
- CPU에 있음.
- 이 비트값을 통해서 커널모드인지 유저모드인지 판단함.
-
User mode에서의 previleage operation
-
TRAP
-
application 즉시 중단
-
하드웨어를 통해 유저모드를 커널모드로 변환시켜줌.
-
왜 트랩이 발생했는지를 조사함
-> 계속 진행하거나, 중단시키거나.
-
-
System call : user-mode와 kernel-mode의 interaction을 통칭
-
- previleage operation의 예시
-
file open, send to perform access to a socket, malloc to allocate memory
-
-
Signals
운영체제가 어플리케이션 안쪽으로 알람을 보내기 위한 메커니즘
-
5. System Call Flowchart
유저 모드와 커널 모드 간의 상호작용인 System call에 대해서 자세히 알아보도록 합시다.
5-1. 실행과정
-
user process 실행
-
hardware excess 필요로 함 -> System call
-
Kernel로 이동
-
조종 권한을 OS에 넘김
-
-
System call로 인해서 발생하는 것
- OS가 연산을 대신 실행해줌
- OS가 연산을 실행하기 위해서 필요한 arguments를 넘겨줌.
- user program에서 직접 넘겨주는 방법
- register를 이용해서 넘겨주는 방법
- kernel의 메모리 어딘가에 점프함 : system call에서 받은 instruction sequence의 위치로
- kernel mode에서 연산을 실행함.
-
process로 다시 되돌아감.
- 3-2에서 받은 argument를 활용해서 다시 user process의 제 위치로 되돌아감.
=> not cheap operation
5-2. system call을 하기 위해서 필요한 것
- write arguments
- save relevant data at well-defined location
- System call을 하기 위한 parameter를 저장해야함.
- make the actual system call
- system call number를 이용함.
5-3. 동기화 모드
프로세스가 system call이 끝날 때 까지 계속 기다리는 형태.