강의 내용 정리/운영체제(12)
-
운영체제(12), I/O Systems
I/O Systems I/O 디바이스의 일반적인 동작 1. Computer System Operation 1) I/O operation I/O 요청이 오면 이를 수행하고, 이를 모두 수행하면 인터럽트를 보내서 수행이 끝났다는 것을 전달한다. I/O컨트롤러도 작은 컴퓨터이기에 CPU가 IR에 명령어를 적재하고, DR에 데이터를 적재하면 이후 I/O가 명령어를 수행한다. CPU가 주기적으로 체크하면서 읽어오는 것을 폴링이라 한다. 실제로 I/O 디바이스가 수행한 결과를 CPU에 전달하는데 이 크기가 작으면 CPU 레지스터로 I/O가 전달하는데 이를 programmed I/O라고 한다. 아니면 디스크와 같이 CPU에 알려줄 수 없는 경우에는 DMA를 사용한다. CPU가 명령을 내리지 않은 상태에서 인터럽트가 ..
2022.12.19 -
운영체제(11), Mass-Storage Structure
Mass-Storage Structure I/O 장치 관리 제일 중요한 I/O 장치는 세컨더리 스토리지이다. 이게 있어야지 저장하고 관리할 수 있다. 세컨더리 스토리지 HDD 오른쪽 위에 있는 것이 디스크, 디스크 arm과 헤드가 존재해 원하는 위치로 이동해서 데이터를 읽는다. SSD 오른쪽 아래에 있는 것은 SSD이다. ARM CPU가 있어서 플래시 메모리를 읽는다. RAM disk 운영체제의 파일시스템이 존재하는데 HDD나 SSD에 이를 저장한다. 하지만 어떤 경우에는 Ram disk가 존재해서 이 곳에 저장을 하기도 한다. 이를 사용하면 전원을 껐다가 켜면 메모리가 초기화된다. IP time은 리눅스 파일시스템의 원본을 압축해서 플래시 메모리에 가지고 있다가 전원을 켜면 메인 메모리에 램 디스크를 ..
2022.12.18 -
운영체제(10), Virtual memory
Virtual memory 피지컬 메모리가 무한대인 것처럼 지원하기 위해 세컨더리 스토리지를 사용해서 피지컬 메모리에서 잘 안쓰이는 것은 세컨더리 스토리지에 저장해서 필요할 때 가져온다. Demand paging Paging을 요구할 때 Paging을 한다. 페이지가 세컨더리 메모리에 있다가 피지컬 메모리에 왔다갔다하는 것을 swapping이라 한다. 페이지 단위의 swapping이 demand paging이 된다. Swapping은 전체 프로세스를 세컨더리 스토리지에 올리고, 내리는 것을 의미하기도 한다. 여기서의 swapping은 page 단위로 하는 것을 의미한다. TLB라는 캐시가 높은 성능을 보장하는 것은 로컬리티의 특징 때문이다. 디맨드 페이징 또한 로컬리티의 특징을 가지기에 이는 좋은 성능을..
2022.12.18 -
운영체체(9), Main Memory
Memory Management 메모리 관리의 목표 개발자가 메모리가 어떻게 되어있는지를 몰라도 쉽게 사용할 수 있도록 돕는다. 비싼 자원인 메모리를 효율적으로 사용할 수 있도록 하고, 메모리 프로텍션(두 개 이상의 프로세스를 독립적으로 만들어서)을 제공하는 목표를 가지고 운영체제가 메모리를 관리한다. 개발자가 몰라도 잘 사용할 수 있도록 추상화를 잘 해준다. Batch programming - monitor가 프로그램을 메모리에 올리고 이를 모니터링하다가 job을 처리하는 식으로 진행했다. 이때는 프로그램 하나가 메모리를 모두 썼다. 실제 ram의 주소를 사용해서 처리했다. 어차피 프로그램을 하나만 올려서 사용했기 때문이다. Multiprogramming - 여러 프로세스가 메모리에 올라가서 동작해야하..
2022.12.18 -
운영체제(8), Deadlocks
Deadlocks 락이 죽어서 영원히 풀리지 않는 락이다. 화살표를 한 시점에서 쓰레드들이 각각 wait이 된다면 두 쓰레드의 상태는 계속 waiting 상태가 된다. 결국 P0와 P1은 영영 스케줄할 수 없게 된다. Deadlock이 발생될 필요 조건 4가지 a -> b는 a가 참이면 b는 항상 참이고, 이에 따라 a는 b의 충분 조건이 된다. 데드락이 발생하면 위의 네가지 조건이 항상 참이 된다. 즉, 위의 네가지 조건에 만족했다고 해서 무조건 데드락이 발생하는 것은 아니다. mutual exclusion: 한 시점에서 하나의 프로세스만 자원에 접근한다. 이는 해결할 수 없다. Hold and wait: 하나의 프로세스가 홀드한 상태에서 wait한 상태이면 deadlock에 걸릴 가능성이 있다. 이는..
2022.12.18 -
운영체제(7), Synchronization Examples
Synchronization Examples 어플리케이션 프로세스나 쓰레드가 사용하는 모델로는 세마포, 모니터, 뮤텍스 럭이 있다. 세마포는 카운팅, 바이너리가 있다. 바이너리 세마포는 뮤텍스 락과 동일하다. 운영체제에서는 스핀락과 인터럽트 enable, disable 방법을 사용한다. 1. Classical problem of Synchronization 1) Bounded-Buffer Problem 프로듀서는 데이터를 큐에 삽입하고, 컨슈머는 큐에서 데이터를 뽑아 사용한다. 큐를 공용으로 사용하기에 동기화 문제가 발생할 수 있다. 이는 두 가지 문제점이 있다. 우선 count, data, out은 모두 shared data이다. 어셈블리어로 이를 살펴보면 세개의 인스트럭션으로 쪼개지고, 그 사이에 인..
2022.12.18