- 컴퓨터 시스템에서 하드웨어가 어떻게 동작하는지
- 프로그램들이 하드웨어 위에서 어떻게 돌아가는지
컴퓨터 시스템 구조
메모리 - CPU의 작업 공간.
하드디스크 - 디스크 데이터를 메모리로 (인풋). 처리결과를 파일 시스템에 저장 (아웃풋).
Device Controller
컨트롤러들이 각 io device들에 붙어있어 작은 cpu의 역할을 한다.
초록색은 작은 cpu들의 작업공간 - local buffer
registers
cpu안에 메모리보다 빠른 작은 저장공간
interrupt line
- cpu는 메모리에있는 instruction만 실행,
- i/o에 접근해야하는 명령어를 받았을 때,
- 직접 i/o device에 접근하는 게 아니라 각 i/o device controller에게 시킴.
- 그동안 cpu는 할 일 함.
- 인터럽트가 들어오면 우선순위를 따라 하던 일을 중단하고 cpu제어권이 os에 넘어감.
- 일단 input 받은 값을 (local buffer에서) 메모리에 카피해두고 하던 일을 마저 함(timer 시간이 남았으면).
- 끝나면 i/o요청 있었던 프로그램으로 cpu 줌
++ 매번 instruction이 끝나면 interrupt line 체크함.
++ 모든 i/o 접근은 운영체제를 통해서만 할 수 있다. 사용자 프로그램에서 접근 안됨.
timer
- 특정 프로그램이 cpu 독점하는 것을 막기 위해
- os가 timer에 시간을 setting 하고 사용자 프로그램에 cpu 줌
- setting 된 시간이 되면 timer가 cpu에게 interrupt를 걸어서 시간이 끝났음을 알려줌
- cpu제어권이 사용자 프로그램에서 운영체제로 자동으로 넘어감.
- 다음 프로그램에게 timer에 시간 setting 해서 cpu 넘겨주기
예) 무한루프를 도는 프로그램을 만났을 때
Mode bit
- cpu에서 사용하는 게 운영체제인지 사용자 프로그램인지 구분해주는 것
1 사용자 모드 - 한정된 작업 실행 가능
0 모니터 모드(커널모드) - 아무거나 실행 가능
- 보안을 위해 중요한 명령어는 모니터 모드에서만 수행가능.
DMA Controller (Direct Memory Access)
- 원래는 cpu만 메모리 접근이 가능하지만 DMA Controller를 두면 얘도 가능
- 일정한 블록 또는 페이지의 입력이 쌓이면 DMA가 CPU에게 interrupt
- 바이트 단위가 아니라 블럭 단위로 인터럽트를 발생시킴
- 존재 이유 : i/o장치에 의해 발생되는 CPU로 가는 interrupt 빈도 줄이기.
- CPU와의 충돌을 방지하기 위해 memory controller가 존재함.
입출력의 수행
- 모드 빗이 1일 때는 스스로 운영체제에 접근이 불가능하기 때문에 interrupt 걸도록 코드짬. = 소프트웨어 인터럽트 (Trap)
- 사용자 프로그램에서 i/o에 접근하기 위해 운영체제 함수 호출 = 시스템 콜
- 오류에 의한 트랩 = exception
인터럽트 Interrupt
i/o 요청 - 소프트웨어 인터럽트
i/o 일 끝남 - 하드웨어 인터럽트
- 인터럽트 벡터
- 해당 인터럽트의 처리 루틴 주소를 가지고 있음
- 인터럽트 번호와 종류별로 처리해야 할 주소(커널 함수 위치)를 쌍으로 가지고 있음
- 인터럽트 처리 루틴
- 해당 인터럽트를 처리하는 커널 함수, 인터럽트 핸들러
PC register - 메모리 주소를 가리킴
CPU는 PC register가 가리키는 주소에 있는 명령어를 실행함.
보통 다음 자리에 위치한 명령을 순차적으로 진행
메모리 점프하는 인스트럭션을 만나면 순차적 X, 멀리 있는 메모리에 있는 인스트럭션 실행할 수도 있음.
동기식 입출력과 비동기식 입출력
- 동기식 입출력 synchronous I/O
I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
- 비동기식 입출력 asynchronous I/O
I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감.
서로 다른 입출력 명령어
instruction
- 메모리 접근
- I/O device 접근
Memory Mapped I/O ?
저장장치 계층 구조
맨 위에는 CPU가 있음
특징
- 위로 갈수록 속도가 빠른 매체를 사용
- 위로갈수록 비싸서 용량이 작음
- 초록: 휘발성, 빨강: 비휘발성
- CPU에서 직접 접근 가능한 것 primary(바이트 단위로 접근이 가능해야 함)
- 못하는 것 secondary
프로그램의 실행(메모리 load)
프로그램은 실행파일 형태로 하드디스크에 저장되어있음.
그런 실행파일을 실행하면 메모리로 올라가서 프로세스가 됨.
바로 메모리로 올라가는 것이 아니라 중간에 한 단계를 거치게 됨 ⇒ virtual memory
virtual memory안에 프로그램만의 독자적인 주소 공간(Address space)가 생기게 됨.
가상 메모리에서 당장 필요한 부분만 진짜 메모리에 올라감.
당장 필요한 게 아니면 swap area(hard disk)에 내려놓음
Swap area - 휘발성
File system - 비휘발성
둘 다 하드디스크
커널 주소 공간의 내용
data - 운영체제가 사용하는 자료구조들이 정의되어있음.
함수
- 사용자 정의 함수
- 라이브러리 함수
- 커널 함수
1,2는 사용자 프로그램 주소공간
3은 커널의 주소 공간에 위치
출처 : http://www.kocw.or.kr/home/cview.do?cid=3646706b4347ef09
'study > 운영체제 OS' 카테고리의 다른 글
CPU Scheduling - 운영체제 반효경 교수님 (0) | 2022.10.28 |
---|---|
Process management - 운영체제 반효경 교수님 (0) | 2022.10.24 |
Process - 운영체제 반효경교수님 (0) | 2022.10.23 |
Introduction to OS (0) | 2022.10.20 |
운영체제 개요 - 이화여대 반효경교수님 강의 (0) | 2022.10.20 |
댓글