[Operating Systems] Resource Management
Process Management
- process는 resource들을 필요로 한다. 뿐만 아니라 다양한 초기화 데이터들도 필요로 한다.
- program : disk 안에 담긴 파일같은 passive entity 이다.
- process : active entity.
- program counter : 다음에 실행할 명령을 가리킨다.
- process management를 위해 operating system이 해야하는 일들
- user/system process들을 만들고 지우기
- Scheduling processes and threads on the CPUs
- Suspending and resuming processes
- Providing mechanisms for process synchronization
- Providing mechanisms for process communication
Memory Management
- Main memory : large array of bytes
- 각각의 byte는 고유한 주소를 갖고 있다.
- CPU는 instruction-fetch cycle동안 main memory에서 명령을 읽어오고, main memory에다가 데이터를 쓰거나 읽는다.
- Main memory는 CPU가 직접 접근할 수 있는 유일한 큰 저장소이다.
- ex) I/O call로 정보를 읽어오고 싶을 때 main memory로 먼저 데이터를 옮기고 CPU가 그것을 처리하는 식으로 동작한다. 마찬가지로 instruction 또한 main memory에 존재해야 한다.
- Memory management를 위해 operating system이 해야하는 일들
- 메모리의 어느 부분이 사용되고 있고 어떤 프로세스가 사용하고 있는지 체크
- 메모리 할당 / 할당해제 관리
- 어느 프로세스나 데이터가 memory로 들어가고 나올 것인지 확인
File-System Management
- file?
- storage device의 physical properties를 추상화해서 만든logical storage unit
- file management
- file management를 위해 operating system이 해야하는 일들
- 파일 만들고 삭제
- 파일을 정리하기 위한 directories를 만들고 삭제
- 파일과 디렉토리를 다루기 위한 기본적인 기능들 지원
- 파일들을 mass storage에 mapping하기
- 파일들을 nonvolatile한 stable storage media에 백업하기
Mass-Storage Management
- Secondary storage management를 위해 operating system이 해야하는 일들
- Mounting and unmounting
- Free-space management
- Storage allocation
- Disk scheduling
- Partitioning
- Protection
- tertiary storage devices는 느리지만 용량이 커서 거의 접근하지 않는 데이터들을 보관하는데에 쓰이게 된다.
Cache Management
- cache?
- main memory와 같은 storage system에 정보가 저장되어 있다.
- 사용될 때, 더 빠른 storage system인 cache에 복사된다.
- 정보가 필요할 때, cache에 있는지 우선 확인하고, 있다면 cache에서 바로 사용한다. 없다면, 직접 source로부터 가져오고, 곧 필요할 것이라고 예상해 cache에 복사해 둔다.
- 내부의 programmable registers 또한 high-speed cache를 지원하기도 한다. programmer가 정보를 저장하기 위해 main memory를 쓸 지, register를 쓸 지 결정한다.
- 나머지 cache들은 hardware에 의해 동작한다. 예를들면, 대부분의 system들은 instruction cache를 가져서 다음 명령을 저장한다.
- cache는 제한된 크기를 가지고 있기에, cache management도 중요한 문제이다.
- storage hierarchy에서의 다른 level간의 information교환은 explicit하거나 implicit 하게 hardware design이나 controlling operating-system software에 의해 결정된다.
- 예를 들면, cache -> CPU & register는 보통 hardware function이고 operating system이 관여하지 않는다. 반대로, disk -> memory는 operating system에 의해 전달된다.
- hierarchical storage structure에서는 같은 데이터가 storage system의 서로 다른 level에 존재할 수도 있다.
- ex) 정수 A의 값을 1 증가시킨다고 하자. A는 B라는 파일 안에 존재하고, B는 hard disk 안에 존재한다. 우선 A라는 값을 읽어오기 위해서 I/O operation을 통해 A가 있는 disk block을 main memory에 복사한다. 그 후 A값을 cache와 내부 레지스터로 복사해 온다. 그 다음 내부 레지스터에 있는 A 값이 증가하고 나면, 여러 곳에 존재하는 A값은 다 똑같지 않게 된다. internal register에서 값을 다시 hard disk로 옮기고 나서야 A값은 다 똑같게 된다.
- ex) multiprocessor environment에서 문제가 복잡해지는데, 각 CPU는 local cache를 가지고 있고, 모두 다 A라는 값에 접근한다고 하면 어떤 CPU는 증가하기 전 A의 값, 어떤 CPU는 증가한 후의 A 값을 가지게 된다. 이러한 문제는 'cache coherency'라고 불리며, hardware level에서 해결되어야 한다.
- ex) distributed environment의 경우 서로 다른 컴퓨터에서 비슷한 일이 일어난다. 추후에 자세히..
I/O System Management
- I/O subsystem의 구성 요소
- A memory-management component that includes buffering, caching, and spooling
- A general device-driver interface
- Drivers for specific hardware devices
오직 device driver만이 그것이 할당된 device의 특징을 알고 있다.