- cpu 작업 공간이 메모리이다
mode bit
모드빗을 통해 하드웨어적으로 두가지 모드의 연산을 지원한다
1은 사용자모드 , 0은 모니터 모드
보안을 해칠 수 있는것은 모드비드0으로 해두고 '특권명령'으로 규정
인터럽트나 exception 발생시 하드웨어가 modee bit을 0으로 바꿈
사용자 프로그램에게 cpu를 넘기기전에 mode bit을 1로 셋팅
- register안에 pc가 있다 pc란 program count인데 다음에 실행할 명령어를 가지고 있다.
cpu독점을 막기 위해서 os혼자서 할 수 없다 그것을 도와 주는 것이 timer이다 timer에 시간을 세팅했는데 일정 시간이 지나면 cpu에게 인터럽트를 걸어서 cpu가 os에게로 전달된다,
타이머 -> 정해진 시간이 흐른 뒤 os에게 제어권이 넘어가도록 인터럽트를 발생시킴(한 프로세스가 cpu를 독점하는 것을 방지)
Interrupt
프로그램을 실행 중에 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 중단하고 발생된 상황을 처리한 후 다시 실행중인 작업으로 복귀하는 작업
인터럽트는 하드웨어인터럽트가 있고, 소프트웨어 인터럽트가 있다 이 중에서 소프트웨어 인터럽트는
- Exception : 프로그램이 오류를 범한 경우
- System call : 프로그램이 커널 함수를 호출하는 경우
인터럽트 처리 루틴(인터럽트 핸들러) -> 해당 인터럽트를 처리하는 커널함수이다. os안에 있다
cf : I/O 작업은 CPU가 직접 하는 것이 아니다, 프로세스가 IO작업을 못하니 CPU에게 이야기해서 CPU를 device controller로 넘겨서 수행하는 것이다.
시스템콜
사용자 프로그램이(프로세스) os의 서비스를 받기 위해 커널 함수를 호출 하는 것이다
일반적으로 i/o 작업을 하는 controller들이 cpu한테 인터럽트를 걸어서 cpu를 os로 넘길 수도 있지만 일반적인 사용자 프로세서들이 자신들끼리는 처리하지 못하는 일들이 있을경우 그것을 os한테 부탁하기 위해서 스스로 인터럽트를 걸어서 cpu로 전달한다 이런 것을 시스템콜이라고한다
출처 : https://itwiki.kr/w/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8
os한테 cpu가 넘어가는경우
interrupt line을
하드웨어 장치들이 인터럽트를 거는 경우 cpu가 os에게로 돌아간다
시스템콜 (프로세스들이 io작업을 못하기에 그것을 부탁하기 위해서 cpu를 os에게 넘긴다)
프로세스가 일을 하다가 본인에게 권한이 없는 일을 할 경우 인터럽트가 걸려서 cpu가 os에게로 돌아가게된다
사용자 프로그램에서 os에게 cpu가 넘어 간 경우
타이머 인터럽트가 걸린 경우 (어느정도 시간이 지나게되면 해당 프로세스에게서 cpu 가지고 와서 os에게 준다)
오래 걸리는 IO 작업을 해야할 경우 (IO 끝날때 까지는 기다려야해서 cpu를 쓸 수가없어서 os에게 cpu가 넘어간다)
동기식 입출려과 비동기식 입출력
동기식 입출력
시간적으로 맞아 떨어저야한다는 의미
ex 가수들의 립싱크할때 입하고 음악이 맞아야한다 (동기식의 느낌)
DMA ( Direct Memory Access)
위의 사진참고
인터럽트도 너무 빈번하게 작동하면 그것 자체도 오버헤드이다.
cpu의 중재없이 device controller가 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송
cpu의 입출력 기계어
- I/O를 수행하는 특별한 IO ~
캐싱의 원리
캐싱은 정보를 빠른저장시스템으로 저장하는 것이다(재상용성, 이미 한번 사용되었던 것이 다시 사용되는 것)
저장장치 계층 구조에서 제일 위는 registers이고 맨 밑은 디스크쪽이다 필요할때마다 맨 밑으로 갔다가 다시 제일 위로 가면 시간이 오래 소모된다 그래서 밑으로 내려가다가 필요한 정보를 가지고 있는 부분이 발생하면 거기서 다시 정보를 가지고 와서 위로 올라 가는 것이 캐싱의 개념이다
출처 : 변효경 교수님 os 강의
'운영체제' 카테고리의 다른 글
프로세스 synchronize (0) | 2021.10.21 |
---|---|
프로세스, 스레드, cpu스케쥴러, contextswitch (0) | 2021.10.19 |
os란 (0) | 2021.10.18 |
address binding (0) | 2021.10.05 |
동시성 vs 병렬성 (0) | 2021.10.02 |