Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 초기화 순서
- 운영체제의 예
- 오버라이딩과 오버로딩 차이점
- webview_flutter
- static import문
- 기본형 매개변수
- 조상의 생성자
- 참조형 반환타입
- 클래스 변수
- PriorityQueue
- 오버로딩
- 운영체제의 목적
- 인스턴스 메서드
- 명예의전당(1)
- this()와 참조변수 this 차이점
- object클래스
- FLUTTER
- this()
- 운영체제의 구조
- 참조형 매개변수
- stateful widget 생명주기
- 운영체제의 분류
- 객체 배열
- static 메서드
- 이것이코딩테스트다
- 프로그래머스
- 호출스택
- 운영체제란 무엇인가
- stateless widget
- stateful widget
Archives
- Today
- Total
Coram Deo
[운영체제] - 2강 컴퓨터 시스템 구조 / Mode bit / Timer / Device Controller / 입출력(I/O)의 수행 / 동기식 입출력과 비동기식 입출력 / 시스템콜(System Call) / 인터럽트(Interrupt) 본문
운영체제
[운영체제] - 2강 컴퓨터 시스템 구조 / Mode bit / Timer / Device Controller / 입출력(I/O)의 수행 / 동기식 입출력과 비동기식 입출력 / 시스템콜(System Call) / 인터럽트(Interrupt)
탁탁슝 2023. 2. 6. 19:05컴퓨터 시스템 구조
컴퓨터
- cpu : 매 clock cycle 마다 메모리에서 instruction(기계어)를 하나씩 읽어서 실행하게 됨.
- mode bit : cpu에서 실행되는 것이 운영체제인지 사용자 프로그램인지 구분해줌.
- 1 사용자 모드 : 사용자 프로그램 수행
- 0 모니터 모드 : OS 코드 수행 (= 커널 모드, 시스템 모드)
- mode bit이 0일때는 모든 instruction을 실행할 수 있음
- - 특권명령 : mode bit이 0일때만 실행할 수 있는 명령어
- mode bit이 1일때는 제한된 instruction만 실행할 수 있음(보안 목적)
- registers : 메모리보다 빠르면서 정보를 저장할 수 있는 작은 공간
- interrupt line : I/O device에서 요청이 들어왔을 때 cpu에게 전달함.
- mode bit : cpu에서 실행되는 것이 운영체제인지 사용자 프로그램인지 구분해줌.
- Memory
- timer : 특정 프로그램이 cpu를 독점하는 것을 막기 위한 하드웨어
- 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시킴
- 타이머는 매 클럭 틱 때마다 1씩 감소
- 타이머 값이 0이 되면 타이머 인터럽트 발생
- cpu를 특정 프로그램이 독점하는 것으로부터 보호
- 타이머는 time sharing을 구현하기 위해 널리 이용됨
- 타이머는 현재 시간을 계산하기 위해서도 사용
- 동작 과정
- 처음에 컴퓨터 전원을 키면 운영체제가 cpu를 갖고 있다가
- 사용자 프로그램이 실행되면 그 프로그램에게 cpu를 넘겨준다.
- 넘겨줄때 timer에 값을 세팅한다. (보통 1초보다 짧음. 보통 수십ms)
- 세팅된 시간이 끝나면 timer가 cpu에게 interrupt를 건다.
- cpu는 매번 하나의 instruction을 실행하고 interrupt line을 체크하는 것을 반복한다.
- interrupt line에 interrupt가 있다면 cpu는 운영체제에게 자동으로 넘어간다.
- 그 다음 운영체제가 다음 프로그램에게 cpu를 넘겨준다.
- 만약 프로그램이 I/O 작업이 필요하면 자진해서 운영체제에게 I/O를 해달라고 cpu를 넘겨준다.
- I/O작업을 하는 사이에 cpu는 다른 프로그램에게 넘어간다.
- I/O작업이 끝나면(ex.키보드 입력을 받으면) I/O controller가 interrupt를 걸어서 cpu가 알게되고
- 그렇게 되면 다음 instruction으로 넘어가기 전에 cpu는 운영체제에게 자동으로 넘어간다.
- 키보드 local buffer에 있는 입력받은 내용을 그 친구(I/O작업을 요청한 프로그램)의 메모리영역에 카피해준다.
- 만약 실행중이었던 프로그램의 할당시간이 남아있으면 할당된 시간이 끝난 후에 아까 들어온 interrupt를 처리한다.
- DMA (Direct Memory Access) controller
- 직접 메모리를 접근할 수 있는 컨트롤러
- 목적
- 원래는 cpu만 메모리를 접근할 수 있었는데 I/O장치가 너무 자주 interrupt를 거니까 cpu가 방해를 너무 많이 받음.
- 그래서 DMA controller가 local buffer에 쌓인 내용을 메모리로 복사해줌
- 그 작업이 다 끝났으면 cpu한테 인터럽트를 한번만 걸어서 알려줌.
- 그렇게되면 인터럽트 빈도가 줄어들어서 cpu를 더 효율적으로 사용할 수 있음.
- memory controller : 메모리와 DMA controller가 특정 메모리 영역을 동시에 접근하지 않게 교통정리해줌
I/O device
- Disk (input/output device)
- 키보드, 마우스 (input device)
- 프린터 (output device)
- 모니터 (output device)
- I/O device controller(장치제어기, 하드웨어)
- 각 I/O device마다 붙어있어서 해당 I/O device를 관리하는 작은 cpu역할을 한다.
- 제어 정보를 위해 control register, status register를 가짐.
- local buffer(device controller들의 작업공간, 일종의 data register)를 가짐
- I/O는 실제 device와 local buffer 사이에서 일어남
- Device controller는 I/O가 끝났을 경우 interrupt로 cpu에 그 사실을 알림
- device driver(장치구동기, 소프트웨어) (잘모르겠음 헷갈림)
- OS 코드 중 각 장치별 처리루틴
- * 디스크를 동작하기 위한 메뉴얼은 디스크안에 있는 펌웨어
- device driver가 디스크에서 실제로 헤드를 움직여서 읽고 쓰는 코드는 아님
- 디스크 컨트롤러가 그 코드의 지시를 받아서 일함
- device driver는 이 장치(ex. 디스크)를 수행하기 위해서 필요한 cpu가 수행하는 코드를 담고 있음.
- I/O device controller(장치제어기, 하드웨어)
입출력(I/O)의 수행
모든 입출력 명령은 특권 명령(모드비트가 0일때만 수행가능한 명령)
사용자 프로그램은 어떻게 I/O를 하는가?
- 시스템콜(system call) : 사용자 프로그램은 운영체제에게 I/O요청
- 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것
- 시스템콜은 일반적인 함수호출과는 다름
- 함수호출은 instruction의 메모리 위치를 점프함.
- 그러나 시스템콜은 점프가 불가능함. os에 해당하는 메모리 주소로 바꿀 수 없음. 왜냐면 mode bit가 1이므로 os에 해당하는 메모리 접근 허용이 안됨!
- 프로그램이 운영체제에게 뭔가를 요청하기 위해서 소프트웨어적으로 직접 인터럽트를 걸 수 있음.
- 인터럽트가 들어왔기 때문에 mode bit이 0으로 바뀌고 cpu 제어권이 운영체제에게 넘어감.
- 만약 프로그램이 디스크에게 뭔가를 읽어오라는 걸 요청하기 위해 시스템콜을 했다면,
- 운영체제가 cpu를 가지고 있기 때문에 디스크 컨트롤러한테 뭔가를 읽어오라고 부탁을 할 수 있는 것이다.
인터럽트(Interrupt)
- 인터럽트 당한 시점의 레지스터와 program counter(pc)를 save 한 후 cpu의 제어를 인터럽트 처리 루틴에 넘긴다.
Interrupt(넓은 의미)
- Interrupt(하드웨어 인터럽트) : 하드웨어가 발생시킨 인터럽트
- Trap(소프트웨어 인터럽트)
- Exception : 프로그램이 오류를 범한 경우
- System call : 프로그램이 커널 함수를 호출하는 경우
- 보통 인터럽트라고 하면 하드웨어 인터럽트를 말하고, 소프트웨어 인터럽트는 Trap이라고 한다.
- I/O를 하기 위해서 필요한 인터럽트
- I/O 요청을 하기 위해서는 소프트웨어 인터럽트(System call)
- I/O가 다 끝났으면 I/O 컨트롤러가 하드웨어 인터럽트로 cpu에게 알려줌.
- *현대의 운영체제는 인터럽트에 의해 구동됨.
- 운영체제는 cpu를 잡을 일이 없음. 인터럽트가 들어올때 빼고는!
- 그렇지 않을 때는 항상 사용자 프로그램이 cpu를 쓰고 있음.
인터럽트 관련 용어
- 인터럽트 벡터
- 해당 인터럽트의 처리 루틴 주소를 가지고 있음
- 인터럽트 처리 루틴(=Interrupt Service Routine, 인터럽트 핸들러)
- 해당 인터럽트를 처리하는 커널 함수
* 이 포스팅은 이화여대 반효경 교수님 운영체제 강의를 보고 정리한 내용입니다.
반효경[운영체제] 3. System Structure & Program Execution 1
반효경 [운영체제] 3. System Structure & Program Execution 1
설명이 없습니다.
core.ewha.ac.kr
'운영체제' 카테고리의 다른 글
[운영체제] - 1강 운영체제란 무엇인가 / 운영체제의 목적 / 운영체제의 분류 / 운영체제의 예 / 운영체제의 구조 (0) | 2023.02.06 |
---|