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
- 프로세스 불연속 할당
- 웹개발
- Page Table의 구현
- 자바 알고리즘
- linux
- Segmentation with Paging
- 스프링부트
- annotation
- 코드스테이츠 백엔드 과정 39기
- Shared Page
- 리눅스
- 스프링
- 프로세스 동기화
- Inverted Page Table
- 자바 문제풀이
- Allocation of Physical Memory
- jpa
- 다단계 페이지 테이블
- springboot
- 웹 프로그래밍
- CS
- spring
- 문제풀이
- 메모리 관리
- Effective Access Time
- 프로세스 할당
- 2단계 Page Table
- 메모리의 불연속적 할당
- 알고리즘
- 운영체제
Archives
- Today
- Total
GrowMe
[운영체제] 컴퓨터 시스템과 프로그램 수행 (1) 본문
컴퓨터 시스템과 프로그램 수행
# 컴퓨터 시스템 구조
# Mode bit
# Timer
# Device Controller
# 시스템콜
# 인터럽트
# 입출력의 수행
✍️ 본 포스팅은 이화여자대학교 반효경 교수님의 "운영체제" 강의를 들으며 정리한 내용입니다.
*컴퓨터 시스템 구조
- CPU의 역할 : 메모리의 instruction를 순서대로 실행해준다.
- Interrupt line : CPU는 키보드 입출력 등 각 I/O 컨트롤러 수행 처리를 시키고 응답을 받아온다. 이때 각 컨트롤러로의 전달 통로라고 볼 수 있다.
- mode bit : 지금 CPU에서 사용중인 것이 운영체제인지 사용자 프로그램인지 구분해줌
- registers : CPU 내부에 메모리보다 더 빠르게 정보 저장 가능한 공간들
- device controller : I/O 기기들을 통제한다.(작은 CPU)
- I/O 기기 : 디스크 키보드 등 입출력 기기를 말함. 이를 컨트롤하기 위해서는, 사용자 프로그램에 할당된 CPU가 아니라 운영체제에 CPU 제어권을 넘겨준 뒤, CPU의 지시로 작동되는 device controller에 의해 통제된다.
- local buffer : device controller의 작업 공간
- timer : 무한루프를 도는 프로그램을 CPU가 실행하면 다른 프로그램으로 넘어가지 못한다. 이를 해결하기 위해 timer에서 셋팅된 시간(일반적으로 수십 ms)이 되면 timer가 CPU에게 interupt를 건다. CPU는 이를 통해 사용자 프로그램으로부터 CPU 제어권을 OS(운영체제)로 넘길 수 있게 된다. -> 운영체제가 다른 프로그램으로 timer 셋팅 후, CPU 할당을 넘겨준다.
- DMA controller : 원래는 메모리 접근은 CPU만 가능하지만, I/O 장치 등으로 CPU가 Intrrupt를 너무 많이 당하기에 CPU가 효율적이게 사용되지 못함. 따라서 DMA controller도 메모리에 접근 가능하게함. buffer에 모아둔 입력을 메모리에 옮김. 작업들이 모두 끝나면, CPU에 Interrupt를 한번만 걸면 되기에 효율적.
- memory controller : 메모리에 CPU와 DMA 컨트롤러가 동시 접근할 시, 이를 교통정리 해주는 역할
*Mode bit
역할
사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해 막기 위한 보호 장치
모드
- 1 사용자 모드 : 사용자 프로그램 수행
- 0 모니터 모드 : OS 코드 수행 (== 커널모드, 시스템 모드)
- 보안을 해칠 수 있는 중요한 명령어는 모니터 모드에서만 수행 가능한 특권 명령으로 규정
- Interrupt나 Exception 발생 시, 하드웨어가 mode bit을 0으로 바꿈
- 사용자 프로그램에게 CPU를 넘기기 전에 mode bit을 1로 셋팅
*Timer
- 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 Interrupt 발생시킴
- 타이머는 매 클럭 틱 때마다 1씩 감소
- 타이머 값이 0이 되면 타이머 Interrupt 발생
- CPU를 특정 프로그램이 독점하는 것으로부터 보호
- 타이머는 time sharing을 구현하기 위해 널리 이용됨
- 타이머는 시간을 계산하기 위해서도 사용됨
*Device Controller
■ I/O device controller
- 해당 I/O 장치유형을 관리하는 일종의 작은 CPU
- 제어 정보를 위해 control register, status register를 가짐
- local buffer를 가짐 (일종의 data register)
■ I/O는 실제 device와 local buffer 사이에서 일어남
■ Device controller는 I/O가 끝나면 interrupt로 CPU에 알림
■ device driver (장치구동기)]
- OS 코드 중 각 장치별 처리루틴 -> SOFTWARE
■ device controller (장치제어기)
- 각 장치를 통제하는 일종의 작은 CPU -> hardware
*시스템콜(System Call)
사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수 호출(운영체제로 제어권 넘기기 위해)
*인터럽트(Interrupt)
■ 인터럽트
- 인터럽트 당한 시점의 레지스터와 program counter를 save한 후, CPU의 제어를 인터럽트 처리 루틴에 넘긴다.
■ Interrupt (넓은 의미)
- Interrupt (하드웨어 인터럽트) : 하드웨어가 발생시킨 인터럽트
- Trap (소프트웨어 인터럽트)
- Exception : 프로그램이 오류를 범한 경우
- System call : 프로그램이 커널 함수를 호출하는 경우
■ 인터럽트 관련 용어
- 인터럽트 벡터 : 해당 인터럽트의 처리 루틴 주소를 가지고 있음
- 인터럽트 처리 루틴 (Interrupt Service Routine : 인터럽트 핸들러)
해당 인터럽트를 처리하는 커널 함수 (각 인터럽트가 해야할 일이 정의된 코드)
*입출력(I/O)의 수행
■ 모든 입출력 명령은 특권 명령(모니터 모드)
■ 사용자 프로그램은 어떻게 I/O를 하는가?
- 시스템콜(system call) : 사용자 프로그램은 운영체제에게 I/O 요청
- trap(소프트웨어 인터럽트)을 사용하여 Intrrupt 벡터의 특정 위치로 이동
- 제어권이 Intrrupt 벡터가 가리키는 Interrupt 서비스 루틴으로 이동
- 올바른 I/O 요청(접근 권한 등)인지 확인 후 I/O 수행
- I/O 완료 시, 제어권을 시스템콜 다음 명령으로 옮김(하드웨어 인터럽트)
'CS(Computer science)' 카테고리의 다른 글
[운영체제] 프로세스 관리 (0) | 2022.12.12 |
---|---|
[운영체제] 프로세스 (0) | 2022.12.10 |
[운영체제] 컴퓨터 시스템과 프로그램 수행 (2) (0) | 2022.12.09 |
[운영체제] 운영체제란 무엇인가 (0) | 2022.11.17 |
[TIL] 디자인 패턴이란 (0) | 2022.11.03 |
Comments