Week 2: 시스템 구조 및 프로그램 실행

2023. 10. 18. 23:49· CS/운영체제
목차
  1. Mode Bit
  2. Timer
  3. Device Controller(장치 처리기)
  4. Interrupt
  5. System Call
  6. 동기식 입출력과 비동기식 입출력
  7. DMA (Direct Memory Access)
  8. I/O 입출력 명령어
  9. 저장장치 계층 구조
  10. 프로그램의 실행 (메모리 load)
  11. Kernel Address Space
  12. 사용자 프로그램이 사용하는 함수

Mode Bit

Mode Bit: 하드웨어적으로 두 가지 operation 지원

  • Mode Bit == 1 : 사용자 모드 - 사용자 프로그램 수행
  • Mode Bit == 0 : 모니터 모드 (= 커널 모드, 시스템 모드) - OS 코드 수행, System call 수행
  • 보안과 관련된 중요한 명령어는 모니터 모드에서만 수행 가능한 특권명령
  • Interrupt나 Exception 발생 시 하드웨어가 Mode Bit를 0으로 바꿈
  • 사용자 프로그램에게 CPU를 넘기기 전에 Mode Bit를 1로 바꿈

Timer

Timer

  • 타이머 시간이 0이 되면 타이머 인터럽트를 발생시켜서 운영체제에 제어권이 넘어가도록 한다.
  • CPU를 특정 프로그램이 독점하는 것으로부터 보호
  • Time sharing을 구현하거나 현재 시간을 계산할 때 사용

Device Controller(장치 처리기)

I/O Device Controller

  • 특정한 I/O Device를 관리하는 일종의 작은 CPU (hardware)
  • control register, status register, local buffer를 가진다.
  • I/O 작업이 끝나면 하드웨어 인터럽트를 발생시킨다.

Device Driver(장치 구동기)

  • 각 I/O Device별 처리 루틴이 담겨있는 OS 코드 (Software)

입출력(I/O)의 수행

  • 모든 입출력 명령은 특권 명령
  • 사용자 프로그램의 시스템 콜 -> Trap 발생 -> 제어권이 인터럽트 벡터가 가리키는 인터럽트 서비스 루틴으로 이동 -> 올바른 I/O 요청인지 확인 후 수행 -> I/O 작업 완료 후 제어권을 시스템콜 다음 명령으로 이동

Interrupt

인터럽트가 발생한 시점의 레지스터와 Program Counter(PC)를 save한 후 CPU 제어를 인터럽트 처리 루틴에 넘긴다.

  • Interrupt (하드웨어 인터럽트): 하드웨어가 발생시킨 인터럽트
  • Trap (소프트웨어 인터럽트) 
    • Exception - 프로그램이 오류를 범한 경우
    • System call - 프로그램이 커널 함수를 호출하는 경우
  • 인터럽트 벡터: 해당 인터럽트의 처리 루틴 주소를 가지고 있음
  • 인터럽트 처리 루틴 (Interrupt Service Routine, 인터럽트 핸들러): 해당 인터럽트를 처리하는 커널 함수

- Trap의 예시: 프로세스가 자식 프로세스를 생성할 때 디스크에서 데이터를 읽기 위해 발생한 인터럽트
- 하드웨어 인터럽트가 즉시 발생하는 경우: 프로세스의 CPU 할당 시간이 끝났을 때, 디스크의 파일 읽기 요청에 대한 처리가 완료되었을 때

System Call

System Call: 사용자 프로그램이 커널 함수를 호출하는 것

  • Trap 발생 -> Mode Bit = 0 으로 세팅됨

동기식 입출력과 비동기식 입출력

동기식 입출력 (Synchronous I/O)

  • 입출력 작업이 완료된 후에 제어가 사용자 프로그램으로 넘어감

비동기식 입출력 (Asynchronous I/O)

  • 입출력 작업이 끝나는 것을 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감

두 경우 모두 I/O의 완료는 인터럽트로 알려준다.

DMA (Direct Memory Access)

  • CPU의 중재 없이 device controller가 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송
  • block 단위로 인터럽트 발생
  • 빠른 입출력 장치를 메모리에 가까운 속도로 독립적으로 처리하기 위해 사용

I/O 입출력 명령어

  • I/O를 수행하는 special instruction: I/O 장치마다 특별한 명령어를 사용
  • Memory Mapped I/O: 메모리 접근 instruction 사용
    • 입출력을 위한 고유한 instruction을 두지 않고 입출력 장치에 메모리 주소를 연장해서 할당한 후 메모리 접근 instruction을 통해 입출력을 수행하는 방법

저장장치 계층 구조

Primary (Executable)

  • volatile(= temporary), speed & cost ⬆️, size ⬇️
Register
Cache Memory
Main Memory (DRAM)

 

Secondary

  • non-volatile, speed & cost ⬇️
Magnetic Disk (SSD)
Optical Disk
Magnetic Tape

 

Caching

  • 상대적으로 더 빠른 저장장치에 데이터를 복제해놓고 동일 데이터 재사용 시 빠르게 서비스하는 방법
  • 저장장치 계층 간의 속도 차이를 완충하기 위해 사용

프로그램의 실행 (메모리 load)

File System 안에 실행 파일 A가 있을 때,

Virtual Memory 안에 프로세스 A의 address space가 만들어짐 - stack, data, code 정보 저장

  • stack: 동적 할당 데이터, local, stack data
  • data: static, global 데이터
  • code: 컴파일된 코드

Address translation을 통해서 Physical memory 혹은 Swap area에 저장됨

  • Swap Area: 메모리를 block 단위로 잘라서 사용하지 않는 메모리는 하드 디스크에 저장해놓았다가 사용할 때 실시간으로 불러옴

Kernel Address Space

  • Virtual Memory 사용 X
  • Stack: 프로세스 별 커널 스택
  • Data: 프로세스 별 PCB (Process Control Block), 시스템 자원 control - CPU, mem, disk
  • Code: 시스템콜, 인터럽트 처리 코드, 자원 관리 혹은 편리한 서비스 제공을 위한 코드

사용자 프로그램이 사용하는 함수

함수 (Function)

  • 사용자 정의 함수: 자신의 프로그램 안에서 정의한 함수
  • 라이브러리 함수: 자신의 프로그램에서 정의하지 않고 가져다 쓴 함수, 프로그램의 실행 파일에 포함되어 있다.
  • 커널 함수: 운영 체제 프로그램의 함수, 호출하기 위해서는 시스템 콜을 해야 한다.

사용자 정의 함수와 라이브러리 함수는 해당 프로세스의 Address Space 안의 Code 영역에 저장되어 있고, user-mode(사용자 모드)에서 작동하는 반면, 커널 함수는 Kernel Address Space의 Code 영역에 저장되어 있고 커널 모드에서 작동한다.

저작자표시 (새창열림)

'CS > 운영체제' 카테고리의 다른 글

06. Deadlocks  (1) 2023.11.21
05. Process Synchronization  (0) 2023.11.13
[Week4] CPU Scheduling  (0) 2023.11.02
Week3: 프로세스(Process) 관리  (1) 2023.10.28
Week 1: 운영체제(Operation System, OS) 개요  (0) 2023.10.17
  1. Mode Bit
  2. Timer
  3. Device Controller(장치 처리기)
  4. Interrupt
  5. System Call
  6. 동기식 입출력과 비동기식 입출력
  7. DMA (Direct Memory Access)
  8. I/O 입출력 명령어
  9. 저장장치 계층 구조
  10. 프로그램의 실행 (메모리 load)
  11. Kernel Address Space
  12. 사용자 프로그램이 사용하는 함수
'CS/운영체제' 카테고리의 다른 글
  • 05. Process Synchronization
  • [Week4] CPU Scheduling
  • Week3: 프로세스(Process) 관리
  • Week 1: 운영체제(Operation System, OS) 개요
호프
호프
호프
Untitled
호프
전체
오늘
어제
  • 분류 전체보기 (341)
    • 오류😬 (4)
    • 스터디📖 (96)
      • 웹 개발 기초 (8)
      • Spring (20)
      • ML, DL (30)
      • Node.js (22)
      • React (0)
      • 블록체인 (12)
      • Go (3)
      • Javascript (1)
    • 알고리즘💻 (153)
      • 그리디 (23)
      • Bruteforce&Backtracking (16)
      • DP (17)
      • 이분탐색&정렬&분할정복 (17)
      • 누적합&투포인터 (6)
      • 스택&큐&덱 (19)
      • 그래프(DFS&BFS) (19)
      • 트리 (7)
      • 우선순위큐&다익스트라 (11)
      • 벨만포드&플로이드와샬 (8)
      • map&set&number theory (5)
      • 기타 (5)
    • 프로젝트 (3)
      • 캡스톤 디자인 프로젝트 (3)
    • 블록체인🔗 (3)
      • Solana (2)
      • 개발 (0)
      • Harmony (1)
    • ASC (6)
    • CS (73)
      • 데이터베이스 (12)
      • 클라우드컴퓨팅 (21)
      • 운영체제 (11)
      • 컴퓨터네트워크 (14)
      • 블록체인응용 (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 복습

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
호프
Week 2: 시스템 구조 및 프로그램 실행
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.