운영체제 OS (Operating System)이란?
사용자가 컴퓨터를 쉽게 사용할 수 있도록 해주는 인터페이스이다.

 

운영체제의 역할 

운영체제의 역활은 크게 4가지로 구분할 수 있다.

  1. CPU 스케줄링과 프로세스 관리:
    CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리한다.
  2. 메모리 관리 :
    한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리한다.

  3. 디스크 파일 관리 :
    디스크 파일을 어떤 방식으로 보관할지 관리한다.

  4. I/O 디바이스 (Input/Output) 관리 :
    I/O 디바이스들인 마우스, 키보드와 컴퓨터간에 데이터를 주고 받는 것을 관리한다.

운영체제의 구조  

운영체제의 구조는 다음과 같습니다.

운영체제의 구조

  • GUI (Graphical User Interface) : 사용자가 직접 눈으로 보는 인터페이스를 말한다.
    단순한 명령어 창이 아닌, 마우스 등을 사용하여 아이콘을 클릭해 단순한 동작으로 컴퓨터와 상호동작하는 단계이다.
  • 시스템 콜 (시스템 호출) : 응용 프로그램은 OS가 제공하는 인터페이스를 통해서만 자원을 얻을 수 있다.
    즉, 운영체제가 커널에 접근하기 위한 인터페이스이다.
  • 드라이버 : 하드웨어를 제어하기 위한 소프트웨어이다.

운영체제는 컴퓨터의 자원들을 효율적으로 관리하며 사용자가 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 프로그램 모임이다.

커널이란? 
컴퓨터의 전원을 켜면 운영체제는 이와 동시에 수행된다.
소프트웨어가 컴퓨터 시스템에서 수행되기 위헤서는 메모리에 그 프로그램이 올라가 있어야 한다.
마찬가지고 운영체제도 소프트웨어로서 메모리에 올라가 있어야 한다.

하지만 운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라가면 한정된 메모리 공간의 낭비가 심할 것이다.
따라서 운영체제 중에서 가장 필요한 부분만 메모리에 먼저 올려두고, 그렇지 않은 부분은 요청이 왔을 때 메모리에 올려 사용한다.

이때, 항상 메모리에 상주하고 있는 부분을 커널이라고 한다.

즉, 운영체제의 가장 핵심적인 부분이자 시스템 콜 인터페이스를 제공하며 보안, 메모리, 프로세스, 파일시스템, I/O 디바이스, I/O 요청 관리 등 운영체제의 중추적인 역할을 한다.


시스템 콜 (System Call)

시스템 콜

  • 유저 모드 (사용자 모드) : 사용자 모드에서 사용자 애플리케이션이 실행된다.
    사용자가 접근할 수 있는 영역에 존재하기 때문에 해당 모드에서는 하드웨어에 접근이 불가능하다.
    시스템 콜을 통하여 접근이 가능하다.

  • 커널 모드 : 운영체제가 CPU를 사용하는 모드이다. 
    시스템 콜을 통해 유저 모드에서 사용자 모드로 전환되면 운영체제는 하드웨어를 제어하는 명령어를 실행한다.

 

시스템 콜이 작동할 때 modebit 을 참고해서 사용자 모드와 커널 모드를 구분합니다. (아래 그림 참조)

https://codybuilder.com/41

유저 모드에서 커널 모드로 modebit 을 사용해서 모드를 구분함으로 혹시나 사용자가 의도하지 않은 공격에 대해
완벽하지는 않지만 보호할 수 있다.

modebit = 1 은 유저 모드를 나타내고, modebit = 2는 커널 모드를 나타낸다.

 

위 그림 처럼 사용자가 어떠한 운영체제 프로그램을 사용하려 하면 커널 모드로 들어가기 위해 modebit = 0 으로 바뀌고,
커널 모드에서 로직을 수행한다 이후 다시 유저모드 전환되며 modebit = 1 로 바뀐다.

 

또한 시스템 콜은 크게 6가지로 분류할 수 있다.

  1. 프로세스 제어
  2. 파일 조작
  3. 장치 관리
  4. 정보 유지
  5. 통신
  6. 보호

https://didu-story.tistory.com/311

 

[Operating System] (iOS) System Call (시스템콜, 시스템 호출이란?)

스터디를 운영하고 있습니다. 해당 repository에 가면 더 많은 정보를 보실 수 있습니다! 특히 close 된 PR을 보시면, 어떤 부분에 대해서 고민하고 스터디원들과 이야기나눴는지 보실 수 있습니다 htt

didu-story.tistory.com

 


컴퓨터의 요소 

컴퓨터는 CPU(Central Processing Unit), DMA(Direct Memory Access), 컨트롤러, 메모리, 타이머, 디바이스 컨트롤러 등으로 이루어져 있다.

CPU (Central Processing Unit) : 산술논리장치, 제어장치, 레지스터로 구성되어 있는 컴퓨터 장치를 말하며, 인터럽트에 의해
단순히 메모리에 존재하는 명령어를 해석하는 장치이다.
관리자 역할을 하는 운영체제의 커널이 프로그램을 메모리에 올려 프로세스로 만들면 CPU가 이를 처리한다.

  • 제어장치 : 제어장치는 프로그램 조작을 지시하는 CPU의 한 부품이다.
    입출력장치 간 통신을 제어하고 명령어들을 읽고 해석하며 데이터 처리를 위한 순서를 결정한다.

  • 레지스터 : 레지스터는 CPU 안에 있는 매우 빠른 임시기억장치를 일컫는다.
    CPU와 직접 연결되어 있으므로 메모리보다 연산속도가 수십배에서 수백배까지 빠르다.
    CPU 자체적으로 데이터를 저장하는 방법이 없기 때문에 레지스터를 커쳐 메모리를 통해 데이터를 저장한다.

  • 산술논리연산장치 : 덧셈, 뺼셈 같은 두 숫자의 산술 연산과 베타적 논리합, 논리곱 같은 논리 연산을 계산하는 연산 회로이다
  • 인터럽트 : 인터럽트는 어떤 신호가 들어왔을때 CPU를 잠깐 정지시키는 것을 말한다.
    인터럽트 간에는 우선순위가 존재하고 이에 따라 실행되며, 하드웨어 인터럽트와 소프트웨어 인터럽트로 구분된다.


CPU의 연산처리

  1.  제어장치가 메모리에 계산할 값을 로드합니다. 또한, 레지스터에도 로드합니다.
  2.  제어장치가 레지스터에 있는 값을 계산하라고 산술논리연산장치에 명령합니다.
  3.  제어장치가 계산된 값을 다시 '레지스터에서 메모리로' 계산한 값을 저장합니다.

인터럽트 

 

  • 하드웨어 인터럽트 : 
    하드웨어 인터럽트는 키보드를 연결하거나 마우스를 연결하는 등의 IO 디바이스에서 발생하는 인터럽트를 말한다.

    - 입출력 인터럽트 (I/O 인터럽트) :  입출력 작업의 종료나 오류에 의해 CPU의 기능이 요청됨
    - 정전, 전원이상 인터럽트 :  전원의 공급의 이상
    - 기계 착오 인터럽트 : CPU의 기능적인 오류
    - 외부 신호 인터럽트 : I/O 장치가 아닌 오퍼레이터나 타이머에 의해 의도적으로 프로그램이 중단된 경우
  • 소프트웨어 인터럽트 : 
    소프트웨어 인터럽트는 트랩(trap) or Exception 이라고도 한다.
    프로세스 오류 등으로 프로세스가 시스템 콜을 호출할 때 발동된다.

    - CPU 내부에서 자신이 실행한 명령이나 CPU의 명령 실행에 관련된 모듈이 변화하는 경우 발생
    - 프로그램의 오류에 따라 생기는 인터럽트


DMA 컨트롤러 (Direct Memory Access Controller) : DMA 컨트롤러는 I/O 디바이스가 메모리에

직접 접근할 수 있도록 하는 하드웨어 장치를 말한다.

CPU에만 너무 많은 요청이 들어오기 때문에 CPU의 부하를 덜어 부담을 덜어주는 보조 일꾼이라 보면 된다.

또한 하나의 작업을 CPU와 DMA 컨트롤러가 동시에 하는 것을 방지한다.

메모리 (Memory) : 메모리는 전자회로에서 데이터나 상태, 명령어를 기록하는 장치를 말한다.


크게 보면

CPU는 일꾼

메모리는 공장이라고 보면 된다.

 

공장이 클 수록 더 많은 일을 할 수 있다.

 

'CS Study :' 카테고리의 다른 글

네트워크 : 프로세스와 스레드  (0) 2023.02.22
운영체제 : 메모리  (0) 2023.02.16
네트워크 : HTTP  (0) 2023.02.10
네트워크 : IP 주소  (0) 2023.02.10
네트워크 : 네트워크 기기의 처리 범위  (0) 2023.02.10

+ Recent posts