2022.03.06 - [컴퓨터 공학/0 +운영체제] - [운영체제] 1. 컴퓨터 구조(CPU 동작원리)
운영체제는 interrupt handler, exception handler의 모음이라고 말 할 수 있다.
그렇다면 인터럽트란 무언인가..?
인터럽트(interrupt)란 CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 CPU에게 알려 처리할 수 있도록 하는 것을 말한다.
즉, 간단하게 말하면 인터럽트가 발생한 부분을 먼저 처리하는 것을 의미한다.
1. N+1번지의 User Program을 실행
2. 인터럽트 발생(N+1번지의 User Program까진 실행한다.)
3. Stack Pointer에 T-M번지가 입력되고 그번지에 있는 명령을 Program Counter에 전달
4. Program Counter에 Y번지 입력
5. Interrupt Service Routine 실행
6. Return Y+L번지의 데이터
7. PC에 Y+L 입력
8. Stack Pointer에 T입력
9. PC에 N+1번지 입력되고 User Program을 다시 실행한다.
메모리의 종류..!
메모리의 종류는 다음과 같이 나누어 진다.
- Register(1ns)
- Cache(2ns)
- Main Memory(10ns)
- Magnetic disk(10ms)
- Magnetic tape(100s)
Cache Memory
캐시 메모리는 가격이 비싸서 공학적으로 우리가 잘 설계하여 사용해야한다.
- cache size, block size를 고려
- 언제 cache에 새로운 데이터를 넣을 건지?
- 어느 cache에 새로운 데이터를 넣을 건지?(mapping function)
- cache가 다 찼을때 어느 데이터를 지울 것인지?(replacement policy)
- write policy
- wirte back: 캐시 메모리만 바꾸고 메인메모리는 나중에 바꾸는 방법
- write through: 캐시, 메인 메모리 동시에 바꾸는 방법
캐시 메모리는 block 단위로 main memory에서 read/write 한다.
Cache Memory: Mapping
- Fully Associative Mapping
- Direct Mappping
- Set Associative Mapping
Fully Associative Mapping
- 캐시에 제일 과거에 참조된 데이터를 지우고 메모리의 새로운 데이터를 저장한다.
- 비교회로가 Tag마다 들어가서 가격이 비싸다.
- 속도가 빠르다.
Direct Mapping
- Index를 이용하기 때문에 1개의 비교회로를 이용하여 가격이 싸다.
- 성능은 떨어진다.(같은 index를 참고 할때 성능문제 발생)
00000, 01000, 02000도 똑같이 Index 00에 저장되고 지워지고 한다.
Set Associative Mapping
- Fully Associative Mapping + Direct Mapping 사용
- index도 사용하고 비교회로도 2개 사용
캐시 메모리 성능 측정
- 캐시 access time: 0.1us
- main memory access time: 1us
- 캐시 hit rate: 0.95
- 평균 access time
- 0.95*0.1us + 0.05*0.1us+1us = 0.095 + 0.055 = 0.15us
- 일반적인 Hit rate는 높다. 그이유는 Locality of Reference(참조 지역성)때문.
- Locality
- Temporal Locality(시간)
- Iterative loops, subroutines(한 번 참조한 데이터, 코드는 다시 참조 할 가능성이 높다.)
- Spatial Locality(시간)
- Tavles, arrays(한 번 참조한 데이터의 이웃 데이터는 참조 할 가능성 높다. Block 단위 사용.)
- Working Set
- Temporal Locality(시간)
Disks
- 모든 head는 기계적인 장치로 동시에 움직인다.
I/O Device
interrupt controller는 정해진 우선 순위에 따라서 신호를 전달한다.
interrupt가 발생하면 current instruction까진 수행을 완료한다.
2가지 방식으로 i/o를 처리하는데 다음과 같다.
- Programmed I/O
- Interrupt-driven I/O
Programmed I/O방식은 I/O 처리가 끝날 때 까지 cpu가 기다린다.
Interrupt-driven I/O방식은 I/O가 발생하면 cpu가 command명령을 날린 뒤, cpu가 원래 실행중인 것을 처리한다. 그 이후 입출력이 완료되면 interrupt handler를 통해 해당 입출력 종료를 수행한다.
Dual Mode of Processors
우리는 앞서 kernel mode, user mode가 있다는 것을 배웠다.
이 처럼 프로세서는 2가지 모드를 지원하는데, user program은 직접 i/o를 호출 할 수 없다.
user program에서 i/o 처리를 하기 위해서는 다음과 같은 과정이 필요하다.
- user program이 interrupt(system call)한다. --> user mode
- os에서 해당 명령을 받아 처리한다. interrupt return --> kernel mode
(os는 code data 형태이고, process형태가 아니다.)
interrupt return 하면 kernel mode --> user mode
interrupt 하면 user mode --> kernel mode
user mode
- less-privileged mode
- user program은 일반적으로 이 모드에서 실행된다.
- can not privileged instructions
- 인터럽트, 트랩(trap)이 발생하면 kernel mode로 변경된다.
System mode, control mode, kernel mode
- more privileged mode
- kernel of the operating system
- can execute privileged instructions
privileged instructions
- i/o instructions
- set processor status
- access privileged memory area
아래 사진을 통해 요약 할 수 있다.
buses
데이터 교환을 위해 개발된 하네스의 일종
bridge는 빠른 버스와 느린 버스 사이의 데이터 교환을 위해 개발되었다.
요약
- Processes
- 실행 중인 프로그램, 실행의 주체, 자원을 할당 받은 주체
- Address spaces
- processes가 여기서 실행된다./code data, heap, stack....
- Files
- storage system(unix에서는 개념이 조금 다름)
- I/O
- Protection
- 이중모드 지원(보호 기능)
- The shell
- core(kernel)은 아니고, user mode에 해당 된다.(응용프로그램)
- Ontogeny Recapitultes Phylogeny(개체의 발생은 계통 발생을 반복한다.)
- Large Memories
- Protection hardware
- Disks
- Virtual Memory
'컴퓨터과학 > 0 +운영체제' 카테고리의 다른 글
[운영체제] 7. Scheduling 기법 (0) | 2022.05.15 |
---|---|
[운영체제] 6. Race Conditions(2) -Semaphores, Mutex and Monitors (0) | 2022.05.03 |
[운영체제] 5. Race Conditions(1) (0) | 2022.04.11 |
[운영체제] 4. Processes and Threads(프로세스와 스레드) (0) | 2022.03.26 |
[운영체제] 1. 컴퓨터 구조(CPU 동작원리) (0) | 2022.03.06 |