- 컴퓨터 시스템의 하드웨어 구조
- CPU와 Memory로 구성된 컴퓨터
- I/O device (input/output)
- 인풋은 데이터를 컴퓨터로 입력
- 결과로 디바이스로 내보내는 것을 아웃풋
- Memory라는 것은 CPU의 작업공간
- Instruction 기계어를 실행
- CPU는 매 순간 메모리에서 기계어를 하나씩 읽어서 실행
- I/O device는 별개의 디바이스들
- 키보드, 마우스는 인풋 디바이스
- 프린터, 모니터는 아웃풋 디바이스
- 하드디스크는 보조기억장치로 보통 얘기하지만 I/O device로 보기도 함. 인풋 - 디스크에 데이터를 메모리로 읽어들임/ 아웃풋 - 파일을 디스크에 저장하기도 함
- device controller : 디바이스를 전담하는 작은 cpu같은 역할을 한다
- CPU의 메모리와 같이 필요한 device controller의 작업공간은 local buffer이다
- CPU는 메모리에서 instruction 하나씩 읽어서 실행하는 역할을 함
- CPU안에 메모리보다 더 빠르면서 정보를 저장할 수 있는 작은 공간 registers
- CPU를 가진 게 운영체제인지 사용자 프로그램인지 구분해 주는 프로그램 mode bit
- Interrupt line : 다른 장치가 일이 끝났는지 알려줌
- CPU는 오직 메모리에 있는 instruction만 읽어 옴
- CPU에서 Disk에 있는 정보가 필요할 때 disk controller를 통해 시켜 놓고 (오래 걸리기 때문에 ) 빠른 CPU는 메모리접근으로 계속 instruction을 실행함
- Timer : 특정 프로그램이 CPU를 독점하는 것을 막는 역할
- 각각 정해 놓은 시간마다 CPU를 분할 사용한다
- Interrupt 들어온 게 있는지 체크
- 프로그램에서 바로 I/O 디바이스로 접근할 수 없어 운영체제를 통해서만 가능
- Interrupt가 걸리면 자동으로 운영체제에 CPU 할당해서 뭐 때문인지 확인
- Mode bit - 사용자 프로그램의 잘못된 수행으로 인해 다른 프로그램 및 운영체제에 피해가 가지 않도록 하는 보호 장치
- 0일 때 운영체제가 CPU에서 실행 중일 때 무슨 일이든 할 수 있다. 메모리접근 뿐만 아니라 I/O device 접근 가능
- 1일 때 사용자 프로그램이 CPU를 가지고 있을 때 제한된 instruction만 실행 가능 (보안 상의 이유로)
- 보안을 해칠 수 있는 중요한 명령어는 모니터 모드에서만 수행 가능한 '특권 명령'으로 규정
- Interrupt나 Exception 발생시 하드웨어가 mode bit을 0으로 바꿈
- 사용자 프로그램에게 CPU를 넘기기 전에 mode bit을 1로 셋팅
- 모니터 모드 (= 커널 모드, 시스템 모드)
- Timer - 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시킴
- Device Controller
- 해당 I/O 장치유형을 관리하는 일종의 작은 CPU
- 제어 정보를 위해 control register, status register를 가짐 (실제 지시를 받음)
- 실제 데이터를 저장하는 local buffer를 가짐
- Interrupt가 너무 많으면 비효율적 -> DMA controller
- 역할은 모든 I/O디바이스의 일이 끝나면 모아서 알려줌
- 원래는 CPU만 메모리에 접근, but DMA도 접근할 수 있도록 함
- 메모리 컨트롤러는 같은 메모리를 같이 쓰게 되는 상황을 조율하는 역할
- Device driver(장치 구동기)
: OS코드 중 각 장치 별 처리 루틴 -> software
- Device controller (장치 제어기)
: 각 장치를 통제하는 일종의 작은 CPU -> hardware
CPU의 숙명은 이번에 실행해야 할 instruction 중에서 registers에서 찾아 실행
CPU는 Memory의 지시를 받아 일을 한다
Device driver는 장치를 수행하기 위해 필요한 코드를 담고있다
- 입출력(I/O)의 수행
- 모든 입출력 명령은 특권 명령
- 사용자 프로그램은 어떻게 I/O를 하는가?
- 시스템콜( system call)
- 사용자 프로그램은 운영체제에게 I/O 요청
- Trap을 사용하여 인터럽트 벡터의 특정 위치로 이동
- 제어권이 인터럽트 벡터가 가리키는 인터럽트 서비스 루틴으로 이동
- 올바른 I/O 요청인지 확인 후 I/O 수행
- I/O 완료 시 제어권을 시스템콜 다음 명령으로 옮김
- 사용자 프로그램에서 I/O를 사용하기 위해서 바로 운영체제에 요청 못함 (mode bit이 1인 상태이기 때문에 접근 x)
- 따라서 프로그램에서 직접 interrupt line을 설정해 CPU가 instruction을 실행 후 interrupt가 들어온 지 확인하는데 그때 들어온 interrupt를 확인하면 mode bit을 0으로 바꿔 운영체제에 할당
- I/O요청을 확인해 운영체제가 disk controller에 데이터를 읽어오라고 요청할 수 있게 됨
- I/O 디바이스들이 CPU에 걸 수 있거나 프로그램이 운영체제를 통해 요청해 걸 수 있다
- 운영체제가 시킨 일이 다 끝나면 I/O 컨트롤러가 인터럽트를 건다 -> 하드웨어 인터럽트
- 전자를 소프트웨어 인터럽트 다른 말로 trap / 일반적으로 하드웨어 인터럽트
- 현대의 운영체제는 인터럽트에 의해 구동됨
- 운영체제는 인터럽트가 들어왔을 때만 CPU 사용
- 시스템콜
- 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것
- 각각의 인터럽트가 어떤 일을 해야 하는지 - 인터럽트 처리 루틴
- 어떤 처리로 가야할 지 표시해주는 것 - 인터럽트 벡터 : 해당 인터럽트의 처리 루틴 주소를 가지고 있음
'Study > 운영체제' 카테고리의 다른 글
[운영체제] 5. Process1 필기 (0) | 2021.03.18 |
---|---|
[운영체제] 4. System Structure & Program Execution 2 필기 (0) | 2021.03.18 |
[운영체제] 1. Introduction to Operating Systems 필기 (0) | 2021.03.04 |