그림판으로 그린 컴퓨터 시스템 구조

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

+ Recent posts