컴퓨터 시스템 구조
- Computer
- CPU
- 매 클럭 마다 메모리에서 인스트럭션을 하나씩 읽어서 수행
- registers : 메모리보다 빠른 정보를 저장할 수 있는 공간
- mode bit
- interrupt line : CPU는 메모리와만 상호작용함. 인스트럭션 실행 완료 후 interrupt line을 확인한다.
- Memory
- I/O device와 상호작용이 필요할 때, 프로그램은 권한을 OS에게 반환한다.
- 사용자 프로그램은 I/O 장치에 직접 접근 불가하므로 운영체제를 통해서만 요청을 수행할 수 있다.
- I/O 컨트롤러가 요청이 완료되었음을 확인하고 CPU에게 인터럽트를 발생시킨다.
- 입력된 buffer 메모리를 프로그램 메모리 공간에 copy한다.
- Timer
- OS가 cpu를 점유하다가, 사용자 프로그램에 타이머를 할당해서 cpu의 점유를 넘겨줌.
- Register
- Program Counter register : 실행할 Instruction의 주소를 저장함, 실행 후 4 바이트 단위로 보통 증가
- CPU
- I/O Device
- disk : 입출력의 기능을 일부 수행 (파일 입출력 등)
- Input device : 마우스, 키보드
- Output device : 프린터
- device controller : 각 device를 통제하는 역할, I/O 디바이스의 CPU 역할
- 처리 속도가 CPU 대비 100만배 정도 느린 수준으로 처리 속도의 차이가 큼
- CPU는 device controller에게 일을 시켜서 결과를 local buffer에 저장한다.
- local buffer : 메모리처럼 각 디바이스의 작업 공간, I/O 디바이스의 메모리 역할
Mode bit
- 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하는 보호 장치
- 1 사용자 모드 : 사용자 프로그램 실행 중
- 보안 상의 목적으로 제한된 Instruction만 CPU에서 실행 가능
- 0 모니터 모드 : OS가 CPU에서 실행 중
- 메모리 접근, I/O 접근이 가능하도록 설정
- 보안을 해칠 수 있는 중요한 명령어 수행 가능 ‘특권명령’
- Interrupt, Exception 발생 시 하드웨어가 mode bit을 0으로 바꿈
- 사용자 프로그램에게 CPU를 넘기기 전에 mode bit을 1로 셋팅
- 1 사용자 모드 : 사용자 프로그램 실행 중
Timer
- 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시킴
- 타이머는 매 클럭 틱마다 1씩 감소
- 타이머 값이 0이 되면 타이머 인터럽트 발생
- 한 프로그램이 CPU 독점을 막도록 하는 장치
- Time sharing을 구현하기 위해 널리 이용
- 현재 시간을 계산하기 위해서도 사용
Device Controller
- I/O 장치 유형을 관리하는 작은 CPU
- local buffer를 가짐(data register)
- 제어 정보를 위해 control register, status register를 가짐
입출력(I/O)의 수행
- 모든 입출력 명령은 특권 명령
- 사용자 프로그램은 운영체제에게 시스템콜(system call)을 통해서 I/O를 진행한다.
- 프로그램이 직접 OS의 메모리 함수 실행 권한이 없으므로 interrupt line을 조정하는 함수를 실행함.
- mode bit이 0으로 바뀌고 OS로 변경된다.
- 입출력 명령어
- I/O를 수행하는 special instruction에 의해 수행
- Memory Mapped I/O에 의해 진행
- 메모리 주소 내에 I/O Instruction의 주소를 가짐
DMA controller
- 직접 메모리에 접근할 수 있는 controller
- I/O의 잦은 인터럽트를 막기 위해 DMA가 직접 CPU의 중재 없이 buffer storage 내용을 블럭 단위로 메모리로 복사한 후 CPU에 인터럽트를 최종적으로 발생 시켜 CPU의 부하를 줄인다.(빈도를 줄인다.)
- 바이트 단위가 아닌 block 단위 인터럽트
Memory controller
- DMA controller와 CPU가 동시에 메모리에 접근하지 못하도록 정리
Interrupt
- Interrupt : 인터럽트 당한 시점의 레지스터와 program counter를 save 한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다.
- Interrupt (하드웨어 인터럽트) : 하드웨어가 발생시킨 인터럽트
- Trap(소프트웨어 인터럽트)
- Exception : 프로그램이 오류를 범한 경우
- System call : 프로그램이 커널 함수를 호출하는 경우
- 인터럽트 벡터
- 해당 인터럽트의 처리 루틴 주소를 가지고 있음
- 인터럽트 처리 루틴(interrupt service routine, interrupt handler)
- 해당 인터럽트를 처리하는 커널 함수
시스템콜
- 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것
동기식 입출력, 비동기식 입출력
- 동기식 입출력 : I/O 요청 후 입출력 작업이 완료된 후에 제어가 사용자 프로그램에 넘어감
- 즉, I/O 요청의 결과가 나오기 전에 사용자 프로그램을 계속 사용할 것인지 말 것인지에 따른 분류로 보임
- 구현 방법 1 : I/O가 끝날 때 까지 CPU를 낭비, 매 시점 하나의 I/O만 일어날 수 있음
- 구현 방법 2 : I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음 - I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움 - 다른 프로그램에게 CPU를 줌
- 비동기식 입출력 : I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감
저장장치 계층 구조
- Primary는 주로 휘발성 메모리, 높은 가격, 속도
- CPU에서 직접 접근할 수 있는 메모리(바이트 단위 메모리 접근 - DRAM)를 Primary(Executable)로 분류
- 하드 디스크는 섹터 단위 접근으로 executable하지 않은 매체
- CPU가 속도가 빠르기 때문에 Cache 메모리, Registers로 완충
프로그램의 실행 (메모리 load)
- File System의 실행 파일을 실행
- 전원이 꺼져도 존재하는 실행 데이터
- Virtual memory : 프로그램의 Address space 생성 (code - date - stack으로 구성)
- 실제 존재하는 메모리는 아니며, 모든 데이터를 메모리에 올릴 수 없으므로 swap area와 교환하며 사용하는데 이를 통칭한 가상의 메모리 주소 공간을 일컫음
- Physical memory
- 메모리 상의 존재하는 프로세스로 Virtual memory 중 주요 작업의 메모리
- Swap area
- 프로세스가 종료되면 의미가 없지만 메모리를 절약하기 위해 연장 공간으로서 사용되는 Secondary 메모리 공간
- Address translation
- Virtual memory의 주소를 physical memory 주소로 전환, 하드웨어의 도움을 받아야 함.
용어
- device driver
- CPU가 수행하기 위한 routine에 대한 절차
- device controller
- IO device를 통제하는 hardware
- Caching : copying information into faster storage system - 보통 재사용성을 목적, 재사용될 때 빠르게 사용
- 함수
- 사용자 정의 함수
- 자신의 프로그램에서 정의
- 라이브러리 함수
- 가져다 쓴 함수
- 컴파일을 하면 실행 파일에 포함되어 있다.
- 커널 함수
- 운영체제 프로그램의 함수
- 커널 함수의 호출 = 시스템 콜
- 사용자 정의 함수
'Computer Science > 운영체제' 카테고리의 다른 글
반효경 운영체제 - 4. CPU Scheduling (0) | 2023.01.15 |
---|---|
반효경 운영체제 - 3. 프로세스 관리 (0) | 2023.01.08 |
반효경 운영체제 - 2.2 쓰레드 (0) | 2023.01.04 |
반효경 운영체제 - 2.1 프로세스 (0) | 2023.01.03 |
반효경 운영체제 - 0. 운영체제란? (0) | 2023.01.03 |