CPU
cpu는 프로그램 카운터 레지스터가 가리키는 주소(main memory상)에 존재하는 instruction을 매 clock 읽는다.
Timer
특정 프로그램이 CPU를 독점하는 것을 막기 위한 하드웨어
CPU 스케줄러에 의해 새로운 프로세스가 CPU 제어권을 얻을 때 운영체제는 Timer에 시간을 기록하게 되는데, 이 시간은
cpu clock 마다 줄어드며 이 값이 0이되면 인터럽트를 발생시켜 CPU 제어권을 빼앗는다. (preemptive)
다중 프로그래밍을 위해 존재한다.
modebit
modebit : 0 ---> 커널모드
modebit : 1 ---> 유저모드
인터럽트나 예외 발생시 하드웨어가 modebit를 0으로 바꾼다.
운영체제 프로그램이 CPU를 점유하고 있으면 0, 사용자 응용 프로그램이 CPU를 점유하고 있으면 1의 값을 가진다.
커널 모드에서는 모든 instruction을 수행 할 수 있고
유저 모드에서는 한정된 instruction만을 수행 할 수 있다.
I/O 장치에 대한 접근과 같은 중요한 instruction을 사용자 응용 프로그램이 직접적으로 사용할 수 있게 하는 대신에
사용자 프로그램이 소프트웨어 인터럽트(트랩)을 발생시켜 운영체제가 임무를 수행하도록 한다.
Interrupt line
인터럽트 발생여부를 확인하기 위한 일종의 배열? 매 클럭마다 체크하여 인터럽트 발생했으면 mode bit 0으로 바꾸고
운영체제에 제어권을 넘긴다.
DMA controller
I/O 장치에 의해 interrupt가 너무 잦아 CPU의 성능이 떨어지기 때문에 DMA가 I/O 장치들의 local buffer 내용을 직접 메모리에 복사 할 수 있도록 함. I/O 로컬 버퍼에 페이지 단위 크기의 데이터가 쌓이면 그때 한번에 interrupt를 검
Memory controller
CPU와 별개로 메모리에 I/O local buffer 내용을 쓰는 DMA controller와 CPU가 동시에 메모리에 쓰지 않도록 관리
메모리 장치의 주소에 대한 읽기 쓰기 작업 관리
Device controller
device를 전담하는 작은 cpu 역할
응용 프로그램에서 I/O 처리 과정
1. 응용 프로그램에서 System Call을 한다 (커널 함수 호출)
2. 실행 중이던 프로세스 현재 상태를 저장한다.
3. 메인 메모리 커널의 Code 부분에 올라와 있는 인터럽트 벡터에 접근 (시스템 콜 번호에 따라 인덱스로 접근)
4. 해당 벡터 원소가 가리키는 인터럽트 처리 루틴 정의부로 이동
5. 운영체제는 올바른 요청인지 확인 후 I/O 컨트롤러에 요청
6. 아까 저장했던 프로세스 상태 복구
'운영체제' 카테고리의 다른 글
6. 프로세스 동기화 (0) | 2022.06.09 |
---|---|
5. CPU 스케줄링 (0) | 2022.06.09 |
4. 프로세스 생성 (0) | 2022.06.09 |
3. 스레드 (0) | 2022.06.09 |
2. 프로세스 (0) | 2022.06.08 |