어떻게 하면 잘 정리했다고 소문이 날까...
[OS 2편] 시스템 구조와 프로그램 실행 본문
해당 부분에서는 간단한 컴퓨터 시스템 구조와 인터럽트, 동기와 비동기식 입출력에 대해 알아본다.
1. 시스템 구조
[CPU]
-> 매 사이클마다 메모리에서 명령어 읽어와 수행.
-> 명령 하나 수행할 때마다 인터럽트 라인 확인 후 인터럽트 처리.
[interrupt line]
->각종 컨트롤러에서 발생한 인터럽트를 작성해두는 곳.
[mode bit]
->CPU에서 실행하는 명령어가 OS 명령어인지 사용자 프로그램인지 구분하기 위함 - for 보안.
-> mode bit =1 사용자 모드 (제한된 명령어만 실행 가능)
- 사용자 프로그램에게 CPU 넘기기 전에 mode bit = 1로 세팅.
-> mode bit = 0 커널 모드 (특권 명령 실행 가능)
- interrupt 나 system call 발생 시 mode bit = 0
[memory controller]
-> DMA와 CPU 간의 교통 정리.
[Direct Memory Access Controller (DMA)]
-> 메모리 접근 가능.
-> 중간 중간 local buffer의 내용을 메모리로 복사.
-> 이후 interrupt 발생.
[Timer]
-> 특정 프로그램의 CPU 독점을 막기 위함.
-> 정해진 시간이 흐른 뒤 OS로 제어권이 넘어가도록 interrupt 발생.
-> 매 클럭 사이클마다 1초씩 감소.
[Device Controller]
-> 디스크 내부 조정.
-> I/O 장치 유형을 관리하는 일종의 작은 CPU.
-> 제어 정보 저장을 위한 control, status 레지스터, local buffer가 존재.
-> I/O가 끝나면 device controller가 인터럽트 발생.
- Device Controller: 각 장치를 통제하는 작은 CPU(HW)
- Device Driver: OS 코드 중 각 장치별 처리 루틴 (SW)
2. DMA(Direct Memory Access) Controller
[정의]
CPU의 중재 없이 Controller가 Device Storage의 내용을 Memory에 Block 단위로 직접 전송.
[특징]
빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용.
바이트 단위가 아닌 블록 단위로 인터럽트 발생.
CPU가 I/O 장치들의 메모리 접근 요청에 의해 자주 인터럽트 당하는 것을 막음.
3. 인터럽트
[정의]
인터럽트란 CPU가 프로그램 실행하는 도중에 (장치 등에서) 입출력 요청이나 예외 상황이나 시스템 콜을 처리해야하면 프로그램을 멈추고 CPU가 해당 작업을 처리하도록 요청하는 것.
인터럽트는 하드웨어 인터럽트와 소프트웨어 인터럽트인 트랩으로 나누어 볼 수 있다.
소프트웨어 인터럽트는 예외 발생(Exception), 시스템 콜(커널함수호출)이 있다.
✔️ 시스템 콜이란?
사용자나 응용 프로그램이 커널에서 제공하는 기능을 사용하기 위한 인터페이스.
운영체제는 시스템 콜로 자원에 접근하게 함으로써 자원 보호 가능.
[개괄]
인터럽트 된 시점에 레지스터와 PC(Program Counter) 값을 저장하고 CPU 제어를 인터럽트 처리 루틴으로 넘긴다.
ex)
사용자 프로그램은 어떻게 I/O 하는가?
- system call: 사용자 프로그램이 OS에 커널 함수 요청.
- Trap으로 인터럽트 벡터로 이동.
- 제어권이 인터럽트 벡터가 가리키는 인터럽트 서비스 루틴으로 이동.
- 올바른 I/O 요청인지 확인 후 수행.
- I/O 완료 후 다음 명령 진행.
✔️ 용어
- 인터럽트 처리 벡터: 인터럽트 처리루틴 주소를 저장하는 자료 구조.
- 인터럽트 처리 루틴: 해당 인터럽트 처리하는 커널 함수.
4. 동기식, 비동기식 입출력
동기식 입출력
[정의]
I/O 요청 후 입출력이 완료된 후에야 제어가 사용자 프로그램으로 넘어감.
(I/O 작업이 완료된 후에야 그 프로그램이 후속 작업을 수행할 수 있는 방식)
[구현 방법]
1. I/O가 끝날 때 까지 CPU 낭비하기 - 매 시점 한번만 I/O 발생.
2. I/O가 완료될 때까지 해당 프로세스에게서 CPU 뺏기 -> I/O 처리를 기다리는 큐 프로세스 줄 세우기 -> 다른 프로세스에게 CPU 주기.
- 동기화를 위한 큐 사용. 큐는 연결리스트 형태 및 큐 헤더.
비동기식 입출력
[정의]
I/O 요청이 완료되기까지 기다리지 않고 사용자 프로그램에게 제어권이 넘어감.
(바로 그 프로그램에게 넘어가서 입출력 이외의 작업을 우선 수행)
5. 저장장치
- 비휘발성의 보조기억장치.
[구조]
레지스터
캐시메모리(SRAM)
주메모리(DRAM) (바이트 단위 처리)
------------------------
마그네틱 디스크
옵틱 디스크
마그네틱 테이프
[용도]
1. 파일 시스템으로 사용
2. 스왑영역으로 사용
- 메모리의 공간이 부족하다보니 현재 당장 쓰이지 않는 프로세스를 내려놓는 곳으로 사용함.
'CS 지식 > OS(운영체제)' 카테고리의 다른 글
[OS 6-2편] Process Synchronization (0) | 2023.06.02 |
---|---|
[OS 5편] CPU Scheduling (0) | 2023.03.30 |
[OS 4편] 프로세스 관리 (0) | 2023.03.21 |
[OS 3편] 프로세스 (0) | 2023.02.17 |
[OS 1편] 운영 체제(Operating System)란? (0) | 2023.02.15 |