[OS] 운영체제 3. 컴퓨터 시스템 구조

2023. 5. 20. 22:27·Computer Science/운영체제
목차
  1. 컴퓨터 시스템 구조 
  2. Mode bit 
  3. Timer
  4. Device Controller 
  5. 시스템 콜 
  6. 인터럽트 
728x90

컴퓨터 시스템 구조 

컴퓨터 시스템 구조는 크게 CPU, 메모리, I/O Device, Disk로 구성되어 있다. 

  • Memory : CPU의 작업공간 CPU에서 하는 일을 실행하는 공간이다. 
  • CPU : 매 clock cycle마다 기계어를 하나씩 읽어서 실행하게 된다. 
  • I/O Device : keyboard, 마우스, 모니터 등의 Input / Output 기계 장치 
  • Disk : 보조 기억 장치이면서도 I/O 장치라고도 볼 수 있다. 메모리를 읽어들이는 Input Device이면서 처리 결과를 저장하는 Output Device이기 때문이다. 
  • Device Controller : 각각의 I/O 장치에는 Device Controller가 붙어있다. 이 Device Controller가 각각의 I/O장치를 관리한다. Disk 의 내부를 통제하는 것은 CPU가 아니라, Device Controller가 관리하게 되는 것이다. CPU보다 Disk 가 약 100만배정도 느리다. 따라서 Device Controller가 I/O Device관리한다. 대신 CPU는 메모리에서 명령어를 읽어서 실행하는 일을 한다. 
  • local buffer : Device Controller들도 각각의 작업공간이 필요하다. 이 작업공간에 해당하는 부분이 local buffer이다.
  • Register : CPU안의 Memory 보다 더 빠르면서 정보를 저장할 수 있는 공간이다.
  • Mode bit : 현재 CPU에서 수행중인 것이 운영체제인지, 사용자 프로그램인지를 구분해주는 것이다. 
  • Interrupt line : CPU는 메모리에 있는 명령어만 실행한다. 명령어가 실행되고 나면 다음번에 실행할 기계어의 주소값이 증가한다.
  • timer : 계속 CPU만 쓰는 (ex) while 문) 작업이 있다고 한다. I/O작업도 하지 않는다. CPU가 다른 프로그램에게 넘어가지 않을 것이다. 따라서 CPU를 나눠서 쓰도록 구현할 필요가 있을 것이다. 따라서 timer 라는 하드웨어가 특정 프로그램이 CPU를 독점하는 것을 방지한다. timer가 인터럽트를 걸면 CPU는 잠시 하던 일을 멈추고, CPU의 제어권이 사용자 프로그램으로부터 운영체제로 넘어가게 된다. 
  • Memory Controller : 메모리에 접근하는 작업이 충돌나지 않도록 제어해주는 역할
  • DMA Controller : I/O 장치가 인터럽트를 빈번히 거는 경우, CPU 가 너무 많이 방해를 받게 된다. 이를 방지하기 위해서, I/O 작업이 들어왔을 때 DMA가 중간에서 처리해주고 CPU에게 인터럽트를 한번만 발생시킨다. 좀 더 자세하게는, DMA는 I/O Device에서 작업이 끝나면 직접 local buffer에 담긴 작업 내용을 메모리로 복사하는 일까지 한다. 복사하는 작업이 끝나면 CPU에게 인터럽트를 걸어서 작업이 완료됨을 알린다. 

 

I/O 장치 작업은 OS를 통해서만 사용할 수 있다. 따라서 OS에게 CPU를 넘겨주고 OS는 I/O Device Controller에게 일을 시킨다. 그동안 CPU는 또 다른 작업을 수행하게 된다. 

 

Mode bit 

Mode bit은 사용자 프로그램의 잘못된 수행으로 다른 프로그램이나 운영체제에 피해가 가지 않도록 보호장치 역할을 하게 된다. 

  • 1 : 사용자 모드 , 사용자 프로그램을 수행한다. 
  • 0 : 커널 모드 (= 모니터모드, 시스템모드) , OS 코드를 수행한다. 

예를 들어서, mode bit이 1인경우 사용자 모드이므로 한정된 instruction 만 실행할 수 있다. 따라서 위험한 동작을 사전에 방지하는 역할을 하게 된다. 

 

Timer

  • 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시킨다. 
  • timer는 매 clock 의 tick 마다 1씩 감소한다. 
  • timer의 값이 0 이 되면 timer interrupt가 발생한다. 
  • CPU 자원을 특정 프로그램이 독점해서 사용하는 것을 방지할 수 있다. 

 

Device Controller 

  • I/O Device 를 관리하는 일종의 작은 CPU이다. 
  • 제어 정보를 위해서 control register, status register를 가진다. 
  • local buffer를 가지며, I/O는 실제 device와 local buffer 사이에서 일어나게 된다. 
  • I/O 작업이 끝나게 되면 작업 종료를 CPU에게 알린다. 

 * Device Driver vs Device Controller 

Device Controller는 하드웨어의 영역이다. 각 I/O Device들을 통제하는 작은 CPU이다. 반면 Device Driver는 소프트웨어로, 각 device들을 처리하는 루틴에 대한 코드를 뜻한다. 

 

시스템 콜 

사용자 프로그램이 운영체제로부터 직접 인터럽트를 요청하는 것이다. 일반 함수 호출과는 다르다. 인터럽트가 들어왔기 때문에 mode bit 이 0으로 바뀌고 CPU 제어권이 OS로 넘어가게 된다. 

 

인터럽트 

넓은 의미의 인터럽트는 하드웨어가 발생시킨 인터럽트를 의미한다. 반면, 좁은 의미의 인터럽트는 소프트웨어가 발생시킨 인터럽트로, Trap 이라고 한다. System call 이나 execption 오류가 일어나는 경우이다. 

인터럽트 당한 시점의 register와 program counter를 저장후 CPU의 제어를 인터럽트 처리 루틴에 넘기게 된다. 

CPU는 PC(Program Counter)가 가리키는 명령어를 순차적으로 확인한다. 그리고 한 명령어에서 다음 명령어로 넘어가기 전에 인터럽트가 있는지 확인한다. 인터럽트가 있다면 CPU 제어권이 자동으로 OS에게 넘어가게 된다. 인터럽트 백터에서 인터럽트 처리 함수 주소를 얻는다. 실제로 해야할 일은 인터럽트 처리 루틴에서 처리한다.  

  • 인터럽트 백터 : 해당 인터럽트의 처리 루틴 주소를 가지고 있다. 
  • 인터럽트 처리 루틴 : 인터럽트를 처리하는 커널 함수 

 

 

728x90

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

[OS] 운영체제 5.1 Process  (0) 2023.05.22
[OS] 운영체제 4. 시스템의 구조와 프로그램의 실행  (0) 2023.05.21
메모리의 구조 (Memory Structure)  (0) 2023.04.03
[운영체제] Process와 Thread의 차이  (0) 2023.03.30
[운영체제] 세마포어와 뮤텍스 알고리즘  (1) 2023.01.16
  1. 컴퓨터 시스템 구조 
  2. Mode bit 
  3. Timer
  4. Device Controller 
  5. 시스템 콜 
  6. 인터럽트 
'Computer Science/운영체제' 카테고리의 다른 글
  • [OS] 운영체제 5.1 Process
  • [OS] 운영체제 4. 시스템의 구조와 프로그램의 실행
  • 메모리의 구조 (Memory Structure)
  • [운영체제] Process와 Thread의 차이
minjiwoo
minjiwoo
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
minjiwoo
minji's engineering note
minjiwoo
전체
오늘
어제
  • 분류 전체보기 (613)
    • Data Engineering (42)
      • Apache Spark (11)
      • Databricks & Delta Lake (9)
      • Airflow (3)
      • SQL (6)
      • Trouble Shooting (2)
      • Hadoop (2)
      • MLOps (1)
    • Cloud Engineering (104)
      • AWS (23)
      • Linux 🐧 (29)
      • Docker 🐳 (21)
      • Kubernetes ⚙️ (20)
      • Ansible (10)
    • Computer Science (87)
      • 네트워크 (9)
      • 운영체제 (25)
      • 정보처리기사 (48)
      • CS 기술 면접 스터디 (3)
    • Programming Languages (27)
      • Python (17)
      • C와 C++ (10)
    • Backend (5)
      • Django (2)
    • 프로젝트 (2)
      • 테크포임팩트 (2)
    • iOS (11)
      • 레이블러리 (2)
    • Algorithm (PS) (275)
      • LeetCode (6)
    • 개발일기 (30)
      • 내돈내산 후기🎮 (3)
      • 개발자 취준생 (5)
      • Today I Learned (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Hi there

인기 글

태그

  • EC2
  • Leetcode
  • 쿠버네티스
  • 백트래킹
  • 스파크
  • dfs
  • BFS
  • 데이터엔지니어링
  • 코딩테스트
  • docker
  • 데이터브릭스
  • 알고리즘
  • Swift
  • python
  • 카카오코딩테스트
  • 운영체제
  • 파이썬
  • Databricks
  • 클라우드
  • SPARK
  • 데이터엔지니어
  • linux
  • 프로그래머스
  • Kubernetes
  • AWS
  • dp
  • ansible
  • 빅데이터
  • 백준
  • 리눅스

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.2
minjiwoo
[OS] 운영체제 3. 컴퓨터 시스템 구조
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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