본문 바로가기

운영체제

운영체제 (Operation System)

1. 운영체제 (OS, Operation System)


운영체제는 컴퓨터 시스템의 하드웨어와 소프트웨어(응용 프로그램) 간의 상호작용을 관리하고, 사용자와 컴퓨터간의 인터페이스를 제공하는 소프트 웨어이다

또한, 운영체제는 사용자가 응용 프로그램을 실행 할수 있도록 지원하고, 시스템 자원을 (CPU, 메모리, I/O 디바이스 등) 효율적으로 관리하는 역할을 한다 

 

2. 운영체제의 역할


기초적인 OS 의 목적은 프로그램을 실행하고, 유저의 문제를 쉽게 풀 수 있고록 만드는 것에 있다.
즉, OS 는 중간자 역할을 한다고 말할 수 있다. 

사용자 입장에선 하드웨어의 이용을 편리하게 해주는 프로그램이고, 시스템 입장에서는 CPU, Memory, I/O 디바이스 등의 자원을 총괄하는 프로그램인 것이다.

 

3. 운영체제의 구조


  • 커널 (Kernel)
    • OS 에서 가장 중요한 커널이다. Kernel 의 사전적 의미 자체도 "핵심" 이다
    • 커널은 프로세스 관리, 메모리 관리, 저장공간 관리, 연결된 장치 관리 등 컴퓨터에 속한 모든 자원을 관리하는 역할을 한다
  • 인터페이스 (Interface)
    • 인터페이스는 사용자의 명령을 컴퓨터에 전달하고 결과를 사용자에게 알려주는 소통의 역할을 한다
    • 인터페이스는 대표적으로 GUI 와 CLI 이다
  • 시스템 콜 (System Call)
    • 시스템 콜은 사용자나 프로그램이 직접적으로 컴퓨터 자원에 접근하는것을 막고 커널을 보호하기 위해 만든 코드 집합이다.
    • 커널안에는 중요한 코드가 존재한다. 시스템 콜 함수를 통해서만 커널에 접근하게 하여 중요한 코드나 정보를 바꾸지 못하게 한다.
  • 드라이버 (Driver)
    • 드라이버는 프린터, 키보드 및 디스크 드라이브와 같은 하드웨어 장치와 운영체제간의 통신을 가능하게 하는 소프트웨어이다
    • 특수한 목적을 가진 하드웨어를 사용하기 위해 드라이버를 설치 하며 디바이스와 소통을 가능하게 만들어주는 역할을 한다

 

운영체제는 안정적이고, 효율적인 동작을 하기 위해 어떤 동작을 수행할까 ?

 

4.  운영체제의 동작 방식 (User Mode, Kernel Mode, System Call)


운영체제를 통해 안정적이고, 효율적인 동작을 하기 위해서는
사용자 또는 응용프로그램직접 하드웨어에 접근하는 것을 막아야 한다

운영체제 내부에서는 컴퓨터가 CPU 를 어떻게 사용하느냐에 따라 2가지 방식으로 컴퓨터를 제어한다

  • 유저 모드 (User Mode)
    • 사용자와 데이터를 왔다갔다할 수 있는 등의 작업을 한다. 예를들어 은행원이 데스크에서 고객과 상담하는 것과 유사하다
  • 커널 모드 (Kernel Mode)
    • 운영체제 내부에서 실제로 하드웨어를 제어할 수 있다. 예를들어 은행원이 뒤에서 작업을 하는 것과 유사하다

2가지 방식은 요청에 따라 왔다갔다 하는데 이 요청은 시스템 콜 (System Call) 을 통해서 전환이 된다

예를들어 운영체제는 평소에 유저모드라면, 사용자가 입력을 하면 유저모드에서 시스템 콜이 호출되면서 커널모드로 바뀌어 내부에서 들어온 요청에 맞는 작업을 하고 다시 유저모드로 돌아오는 컨셉이다

(Job 1 을 카카오톡 Job 2 를 크롬이라고 가정)

  1. Job 1 (이하 카카오톡) 프로그램이 실행되어있고 Job2 (이하 크롬) 이 무언갈 하려고 기다리고 있다고 가정 - User Mode
  2. 카카오톡이 작업을 수행하고 있는데, 크롬 본인도 작업을 수행하야한다고 System Call 을 보내게 되는데 getc 라는 시스템 콜이다
  3. System Call 호출 이후 Kernel Mode 로 전환되면서 컴퓨터가 Exception handler 를 통해 수행하며 크롬이 뭔갈 하고싶으니 카톡 잠시 있어봐 하고 크롬을 킨다 (크롬이 일할 수 있는 환경을 만들어준다)
    - 컴퓨터의 메인 메모리 안에 코드와 데이터가 올라와 있다. 그걸 접근할 수 있는건 CPU 밖에 없다. 그러다보니 CPU 가 일을 하려면, 어떤 코드, 어떤 데이터를 메인 메모리에서 가져다 쓰느냐를 매번 결정해야하는데 그것을 운영체제가 커널모드에서 관리한다
  4. 유저모드에서 어플리케이션들이 작업을 하고싶다고 요청을 보내면, 운영체제가 커널모드에서 CPU 한테 작업을 수행하라고 명령을 한다. 그러면 CPU 가 하던일을 멈추고, Job 2 가 요청한걸 수행하게 된다. 즉, 카톡을 멈추고, 크롬이 수행된다
  5. 키보드를 누른다는 것은 가정 먼저 처리해야하는 중요한 작업이다. 어떤 프로그램이 켜져있던 사용자 입력이 먼저 처리되어야해서 키보드가 작동되면, Keyboard interrupt 라는 System Call 이 호출된다
  6. 그때까지 하던일을 모두 멈추고 키보드에 대한 처리를 하게된다
사실 우리가 컴퓨터를 사용하다보면 많은 프로그램들이 동시에 실행되는걸 알 수 있다

프로그램이 실행되려면 CPU 와 메모리 사이에서 작업을 처리하는 소통이 필요하다
멀티코어 환경에서는 다른 코어별에게 다른 System Call 을 서로 처리할 수 있다 (컨텍스트 스위칭-Context Switching)

이러한 작업들이 동시에 이루어지게 보이는 핵심적인 이유는 (이론상) CPU 는 1초에 32억번 클럭이 가능해서 굉장이 빠르게 처리되기 때문이다

 

시스템 콜 (System Call)

 

System Call 은 운영체제가 컴퓨터 하드웨어를 다루기 위해 입출력, 메모리 할당, 프로세스의 생성 등을 수행하는 코드의 집합이다.
이는 사용되는 CPU 와 OS 에 따라서 다양하게 구현되어있다

System Call 은 5가지 유형이 존재한다

  • Process Control : Process 란 컴퓨터가 일을 하는 단위. 어떤 걸 시작하고, 어떤 걸 멈추고 할지를 정해주는것
  • File Management : 파일을 다운로드, 저장, 삭제 하는것 등을 관리
  • Device Management : 연결되어있는 모든 I/O 디바이스를 관리
  • Infomation Maintenance : 컴퓨터에서 작동하고있는 모든 정보 (ex. 컴퓨터 시간, 컴퓨터 상태)
  • Communications (between computer and computer) : 컴퓨터가 다른 컴퓨터와 소통하는 것 (네트워크라고 생각하면 됨 ex. 블루투스, 와이파이, 공유기, 에어드랍) 

 


참고 : https://coduking.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS%EB%9E%80-%EA%B0%9C%EB%85%90%EA%B3%BC-%EA%B5%AC%EC%A1%B0%EC%BB%A4%EB%84%90-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%BD%9C-%EB%93%B1

 

운영체제(OS)란? 개념과 구조(커널, 시스템콜 등)

운영체제(Operating Systems, OS)란? 운영체제(OS)란 유저가 컴퓨터를 편하게 사용할 수 있게 모든 하드웨어 자원을 관리해주는 프로그램이다. 모든 하드웨어 자원을 관리? 그게 무슨 말일까? 하드웨어

coduking.tistory.com

참고 : https://coduking.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%9C%A0%EC%A0%80%EB%AA%A8%EB%93%9C-%EC%BB%A4%EB%84%90%EB%AA%A8%EB%93%9C-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%BD%9C

 

운영체제: 유저모드, 커널모드, 시스템콜

운영체제: 유저모드, 커널모드, 시스템콜 운영체제를 통해 안정적이고, 효율적인 동작을 하기 위해서는 사용자 또는 응용프로그램이 직접 하드웨어에 접근하는 것을 막아야한다. 운영체제 내부

coduking.tistory.com

참고 : https://velog.io/@juijeong8324/OS-1

 

[OS] 운영체제의 역할과 구조

OS 운영체제의 역할과 구조

velog.io