- 컴퓨터 하드웨어의 동작에 대한 챕터
- 컴퓨터 시스템 구조
- 컴퓨터
- CPU
- 메모리에서 명령어를 하나씩 읽어서 실행하고 끝나면 인터럽트 확인
- register : 메모리보다 더 빠른 작은 공간
- mode bit : CPU에서 실행되는 것이 운영체제인지 사용자 프로그램인지 구분
- [인터럽트 과정] Interrupt line
- CPU는 메모리에서 명령어 하나씩 실행하는 일만 반복
- [1] 키보드에서 입력을 받고, 화면 출력, Disk에서 데이터 읽어오기 등 작업이 필요
- [2] Disk에서 데이터가 필요하면 device controller에게 읽어오라고 일을 시킴
- [3] device controller는 Disk에서 데이터를 읽어서 local buffer에 저장
- [4] 그동안 빠른 CPU는 계속 작업을 진행
- [5] I/O가 끝나면 인터럽트를 통해 알림
- Memory
- CPU
- I/O device
- Disk
- 키보드, 마우스, 모니터 등등
- 컴퓨터
- I/O
- Input : device의 데이터가 컴퓨터로 들어가는 것
- 키보드
- Output : 처리 후 데이터를 밖으로 내보는 것
- 모니터
- I/O시 인터럽트 과정
- CPU가 프로그램 실행 중 I/O가 필요
- 프로그램이 자진해서 운영체제에게 CPU를 넘김
- 운영체제가 필요한 작업을 I/O controller에 시킴
- I/O 작업이 오래걸리니까 I/O를 요청한 프로그램이 아닌 다른 프로그램에게 CPU를 넘겨줌
- I/O 작업이 끝나면 controller에서 인터럽트를 보냄
- 인터럽트로 인해 CPU의 제어권은 자동으로 운영체제에게 넘어감
- 운영체제는 인터럽트가 들어온 이유를 확인
- I/O 작업의 결과를 요청했던 프로그램의 메모리에 copy해줌
- 인터럽트를 당한 프로그램에게 CPU를 다시 넘겨줌
- Input : device의 데이터가 컴퓨터로 들어가는 것
- device controller
- device들은 전담하는 cpu 같은 것이 붙어있게됨
- Disk의 내부 컨트롤은 CPU의 역할이 아닌 controller의 역할
- 제어 register : 어떤 명령을 수행할지 설정해주는 register
- device driver
- devcie controller가 하드웨어인 반면, device driver는 소프트웨어
- 각 디바이스를 처리하기 위해서 그 디바이스의 인터페이스가 있음
- 거기에 맞기 접근할 수 있게 해주는 소프트웨어 모듈
- timer
- 특정 프로그램이 CPU를 독점하는 것을 막음
- 운영체제가 실행되면 timer에 값을 설정하고 프로그램에게 CPU를 넘김
- 프로그램이 실행되면서 설정한 값의 시간이 지나면 timer는 CPU에 인터럽트를 보냄
- CPU는 작업을 멈추고, CPU 제어권이 운영체제에게 자동으로 넘어감
- 운영체제는 timer에 값을 다시 설정하고 다른 프로세스에게 CPU를 넘김
- mode bit
- 0 커널 모드 : 운영체제에서 실행중
- 메모리 접근뿐만 아니라, I/O device에 접근하는 명령 실행 가능
- 특권 명령 수행 가능
- 1 사용자 모드 : 사용자 프로그램을 실행중
- 제한된 명령만 실행 가능
- 일반 명령 수행
- 0 커널 모드 : 운영체제에서 실행중
- DMA controller
- 그런데 CPU가 너무 인터럽트를 많이 당함
- CPU가 일 좀 하려고 하면 인터럽트 걸려서 버퍼에 복사해오고를 반복
- 그래서 DMA controller가 필요
- Direct Memory Access : 원래 메모리를 접근할 수 있는 건 CPU 뿐이었는데 DMA controller도 접근
- I/O 작업이 끝나면 DMA가 memory에 복사해줌
- 복사가 끝나면 그 때 CPU에 인터럽트
- memory controller
- CPU와 DMA가 메모리에 동시에 접근이 가능하기 때문에 이를 중재
- I/O의 수행
- 모든 I/O 명령은 특권 명령
- 특권 명령은 운영체제만 실행 가능
- 시스템 콜 : 사용자 프로그램이 운영체제에 수행을 요청
- 시스템 콜
- 한 프로그램이 실행중이면 명령어를 실행하고 다음 명령어 위치로 jump해서 그 명령어 실행하고를 반복
- 그러던 중 I/O가 필요한 명령이 필요
- 하지만 사용자 모드에서 운영체제의 명령 위치로 jump할 수 없음
- 따라서 프로그램은 인터럽트 라인을 세팅하는 명령을 실행
- CPU가 운영체제에 넘어가면서 요청한 I/O을 실행할 수 있게 됨
- 이를 소프트웨어 인터럽트라고 함
- 이렇게 함수를 호출하는 방식을 trap이라고 함
- 현대 운영체제는 인터럽트에 의해 구동
- CPU는 항상 사용자 프로그램이 점유를 하게 됨
- 인터럽트가 발생했을 때 운영체제가 구동
- 인터럽트 용어
- 인터럽트 처리 루틴
- 인터럽트 종류에 따라 처리해야할 작업이 정의가 되어있음
- 이를 처리하는 실제 코드
- 인터럽트 벡터
- 인터럽트 종류에 따른 인터럽트 처리 루틴의 주소를 가짐
- 인터럽트 처리 루틴
'CS > 운영체제' 카테고리의 다른 글
[운영체제] KOCW 반효경 교수님 강의 - 6. Process 2 (0) | 2022.03.28 |
---|---|
[운영체제] KOCW 반효경 교수님 강의 - 5. Process 1 (0) | 2022.03.28 |
[운영체제] KOCW 반효경 교수님 강의 - 4. System Structure & Program Execution 2 (0) | 2022.03.27 |
[운영체제] KOCW 반효경 교수님 강의 - 2. Introduction to Operating System (0) | 2022.03.11 |
[운영체제] 프로그램이 만들어지고 실행되기까지 (0) | 2021.10.01 |