어떻게 하면 잘 정리했다고 소문이 날까...

[OS 2편] 시스템 구조와 프로그램 실행 본문

CS 지식/OS(운영체제)

[OS 2편] 시스템 구조와 프로그램 실행

정리왕이되자 2023. 2. 15. 15:21

해당 부분에서는 간단한 컴퓨터 시스템 구조와 인터럽트, 동기와 비동기식 입출력에 대해 알아본다.

 

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