MAKE IT SIMPLE

컴퓨터 시스템과 System Call - (2) 본문

컴퓨터 공학/운영체제

컴퓨터 시스템과 System Call - (2)

punchlips 2022. 2. 10. 19:57

1. 컴퓨터 시스템

 

▷ 컴퓨터 시스템의 기본 3요소

  • 사용자(User) : 컴퓨터를 사용하여 원하는 결과를 얻는 대상. 주로 사람이지만, 때로는 컴퓨터, 기계, 통신장비, 로봇 등 일 수도 있다. 컴퓨터 시스템의 궁극적인 혜택을 보는 대상이라고 보면 됨!
  • 하드웨어(Hardware)
  • 소프트웨어(Software)

 

▷ 컴퓨터 시스템의 구조

  • 내부 장치
    • CPU(Central Processing Unit) : 중앙에서 사용자가 입력한 명령어를 해석하고 연산한 후 그 결과를 알려준다.
    • Memory : Random Access Memory 즉, 램(RAM)은 임의의 영역에 접근하여 읽고 쓰기가 가능한 주기억 장치다. RAM은 어느 위치에 저장된 데이터든지 처리하는 데 동일한 시간이 걸린다. 현재 실행되는 프로세스들이 여기에 올라오게 된다.
  • 외부 장치
    • Disk : 정보를 저장시키는 보조기억 장치
    • I/O Device(키보드, 마우스, 모니터, 네트워크 장치 등) 

 


 

2. 컴퓨터 시스템의 동작 원리

 

Round Robin : 현대 컴퓨터 시스템은 기본적으로 CPU 가 OS와 사용자 프로그램에 번갈아가면서 할당 되게 된다.

 

1) mode bit

CPU가 운영체제에서 이용될 때는 모든 권한을 줘도 되지만 사용자 프로그램에서 사용될 때는 운영체제에서 실행 될 때와 구분되어야 한다.
왜냐면 여러명의 사용자가 동시에 I/O 작업을 하게되다 보면 사고가 생길수도 있으니깐.
 
- 그래서 보안을 해칠 수 있는 중요한 명령어는 모니터 모드에서만 수행 가능한 ‘특권명령(=System Call)’으로 규정한다
 
=> 이 특권 명령이 발생했을 때 OS에서 이 명령을 사용한 것인지 사용자가 이 명령을 사용한 것인지 구분하는 데 사용하게 된 flag 값이 바로 Mode bit 이다
 
mode bit 값이 
  • 0일 때는 모든 명령이 수행 가능한 상태, 즉 모니터 모드(=커널모드) 이다.
  • 1일 때는 제한된 명령이 수행 가능한 상태, 사용자 모드이다.
 
CPU에 특권명령이 들어 올 경우 mode bit이 0인지 확인하고, 1일 경우 CPU가 자동적으로 운영체제로 넘어가게 된다

 

2) Interrupt

OS → 사용자 프로그램으로 CPU 점유가 넘어갈 경우, 문제가 생겼을 때 OS는 임의로 CPU를 사용자 프로그램에서 가져올 수 없다.

이를 해결하기 위해 사용되는 방법이 인터럽트다.

한마디로 알림이라고 생각하면 된다. 그냥 무슨 일이 생길때마다 인터럽트가 시종일관 발생한다.

  1. CPU는 기계어를 실행하고 다음 기계어를 실행하기 전에 항상 인터럽트의 유무를 확인한다
  2. 인터럽트가 들어왔을 경우 OS에 CPU를 넘긴다
  3. OS는 인터럽트 내용을 확인 후 인터럽트 처리 루틴을 진행한다
 
 

▶ 인터럽트의 종류

 
 
(1) System call
 
- 모든 I/O 명령은 특권 명령이기 때문에 사용자 프로그램은 I/O 명령이 필요할 경우 system call을 통해 인터럽트를 발생시켜 OS를 불러 I/O명령 도움을 받음
 
 
(2) 하드웨어 인터럽트
 
- I/O장치가 할당된 연산을 끝낸 후, CPU에게 인터럽트를 보내 작업이 끝났음을 알림.
 
 
(3) timer
 
- 사용자 프로그램이 무한 루프와 같은 것들을 통해 CPU를 혼자 무한으로 점유하는 상황을 막기 위해 고안됨. 
 
CPU는 매번 다음 기계어를 실행하기 전에 timer에 시간을 지정하고, 사용자 프로그램의 CPU 점유가 정해진 시간이 초과되면 timer는 CPU에 인터럽트를 전달해 CPU의 점유를 막음. 
 
 
 

▶ 인터럽트의 벡터

 
운영체제는 인터럽트가 걸렸을 때 인터럽트의 이유를 확인 하고 인터럽트 처리 루틴을 따라야 한다.
인터럽트 벡터는 해당 인터럽트의 처리 루틴 주소를 가지고 있다.
 
 
 

3) DMA(Direct Memory Access) Controller : 직접 메모리 접근 컨트롤러

I/O 장치는 데이터를 읽을 때 마다 CPU에 인터럽트를 보내 알려주면 CPU는 인터럽트를 받아 메모리에 데이터를 저장 한다.

I/O 에서 1바이트씩 읽어 매 1바이트마다 CPU에 인터럽트를 걸어서 메모리에 저장하면 시간적 손실이 크게 된다.

DMA controller는 I/O 데이터를 DMA에 대신 받아 한블록(ex 512바이트)이 다 차면 DMA는 메모리에 데이터를 직접 넣고 CPU에 인터럽트를 걸어 알려주는 역할을 한다.

 

4) registers : CPU 연산 인풋, 아웃풋을 위한 저장공간

5) PC(program counter) : 다음번에 실행 할 메모리의 주소를 갖고 있음

 

6) Device Controller

CPU는 OS로부터 I/O 장치에 접근해 데이터를 받아오라는 명령을 받으면 I/O 장치로부터 데이터를 받아와야 하나, CPU는 I/O 장치에 직접 접근해 데이터를 가져올 수 없다.
 
이 때문에 I/O 장치에 Device Controller를 달아, CPU는 Device Controller에 명령을 내리고,
Device Controller는 I/O 장치에서 데이터를 가져온 후 CPU에 하드웨어 인터럽트를 보내서 데이터를 전달 한다.
 
 
 
 
 

'컴퓨터 공학 > 운영체제' 카테고리의 다른 글

DeadLock - (5)  (0) 2022.05.09
프로세스 동기화 - (4)  (0) 2022.05.09
프로세스 매니지먼트 - (3)  (0) 2022.02.17
운영체제(OS)란 - (1)  (1) 2022.01.11
Comments