운영체제 개요

yezo cha·2021년 8월 5일
0
post-thumbnail

Operating System

운영체제(Operating System, OS)컴퓨터의 하드웨어를 관리하고, 하드웨어와 소프트웨어, 사용자를 매개하는 프로그램이다.
운영체제는 시스템 및 응용프로그램과 컴퓨터 하드웨어 사이에 위치해 있고 매개체 역할을 한다.
즉, 시스템 및 응용 프로그램은 하드웨어를 직접 제어할 수 없게 만들어져 있다.

컴퓨터라고 하는 하드웨어 장치를 사람이 쉽게 사용할 수 있도록 인터페이스를 제공하는 소프트웨어다.
한정된 시스템 자원을 효과적으로 사용할 수 있도록 관리, 운영함으로써 사용자에게 편리성을 제공한다.

정리하자면, 운영체제는 컴퓨터의 성능을 높이고(performance), 사용자에게 편의성(convenience) 제공을 목적으로 하는 컴퓨터의 하드웨어를 관리하는 프로그램이다.

운영체제커널쉘(명령어 해석기, Command interpreter)로 나뉜다.

커널(Kernel)은 운영체제의 핵심이며, 실체다.
운영체제가 수행하는 모든 것이 저장되어 있으며 항상 메모리에 상주한다.
프로세스 관리, 메모리 관리, 장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것이다.

은 사용자가 커널(운영체제)에 요청하는 명령어를 해석하여 요청하고 그 결과를 출력한다.
사용자(명령) -> 쉘(해석) -> 커널(명령 수행 후 결과 전송) -> 쉘(해석) -> 사용자(결과 확인)

What Operating Systems Do

컴퓨터 시스템의 요소하드웨어(CPU, 메모리, 입출력장치 등), 운영체제, 어플리케이션 프로그램(웹 브라우저, 워드프로세서 등), 유저로 나뉜다.
운영체제의 역할은 사용자 관점(User View)시스템 관점(System View)으로 나눠볼 수 있다.

User View

사용자가 컴퓨터를 쉽게 이용할 수 있도록 한다.
사용자가 내린 명령을 해석하여 실행하고, 사용자와 하드웨어 사이의 매개체 역할을 한다.

System View

시스템에게 운영체제는 자원 할당자(Resource allocator)다.
컴퓨터 시스템은 CPU 시간, 메모리 공간, 파일 저장소 공간, 입출력 장치 등 다양한 문제를 해결해야 한다.
운영체제는 이러한 컴퓨터 자원들을 관리하는 제어 프로그램(Control program)으로서 동작한다.

  • 하드웨어 자원 : CPU, 메모리, 키보드, 마우스, 네트워크 카드
  • 소프트웨어 자원 : 각종 프로그램, 데이터

컴퓨터 시스템과 운영체제

운영체제를 통해 컴퓨터 시스템은 안정적이고 효율적으로 동작이 가능하다.
이처럼 안정적이고 효율적인 동작 환경을 위해서는 응용 프로그램이 직접 하드웨어에 접근하는 것을 막아야 한다.
이를 위해 슈퍼바이저 모드와 사용자 모드(보호 모드)가 사용된다.

슈퍼바이저 모드: 커널 모드(Kernel mode)

CPU 명령어를 사용해 하드웨어를 직접 제어할 수 있는 모드.
운영체제의 커널이 동작되는 모드.

보호 모드: 유저 모드(User mode)

CPU 명령어를 사용할 수 없는 모드.
응용 프로그램이 동작되는 모드.
유저 모드에서 응용 프로그램이 하드웨어에 대한 제어가 필요한 경우에 운영체제에 서비스를 요청하는 호출이라는 매커니즘을 실행한다.
간단하게 말해서, 호출은 응용 프로그램이 하드웨어에 대한 제어를 운영체제에 요청하고, 유저 모드에서 슈퍼바이저 모드로 변경되어 운영체제의 커널이 동작하여 하드웨어를 제어하는 것이다.

운영체제의 서비스

운영체제의 주요 서비스는 하드웨어 자원을 각 사용자 애플리케이션에 적절히 분배해주는 것이다.
하드웨어 자원은 CPU, 메인 메모리, 하드 디스크, 키보드, 마우스, 프린터 등이 존재한다.
이러한 하드웨어 자원을 사용자 애플리케이션이 요구하거나 운영체제 내의 규칙에 의해 적절히 분배하여 컴퓨터의 성능을 최대한 효율적으로 사용해야 한다.

1. 프로세스 관리(Process management)

프로세스 관리는 운영체제 기능 중 가장 중요한 기능 중 하나다.
프로세스와 프로그램은 기본적으로 구분된다.

프로세스는 실제 메인 메모리에서 실행 중인 프로그램(program in execution)을 말한다.
프로그램은 하드디스크와 같은 보조기억장치에서 아무런 동작을 하지 않는 상태이다.
이를 어떠한 요청에 의해 메인 메모리에 할당하여 CPU를 사용하면서 실행하게 되는데 이를 프로세스라 부른다.

프로그램은 디스크나 메모리에 있는 모든 프로그램을 지칭할 수 있지만, 프로세스는 메모리에서 실행 중인 프로그램만을 의미한다는 점에서 보다 좁은 범위라고 볼 수 있다.

주요 기능

  • 프로세스의 생성과 소멸(creation, deletion)
  • 프로세스 활동 일시 중지, 활동 재게(suspend, resume)
  • 프로세스간 통신(interprocess communication: IPC)
  • 프로세스간 동기화(synchronization)
  • 교착상태 처리(deadlock handling)

2. 주기억장치 관리(Main memory management)

주기억장치 즉, 메인 메모리는 프로그램이 실행되기 위한 공간이다.
CPU는 오직 메인 메모리에 있는 프로그램(프로세스)하고만 소통할 수 있다.
주기억장치 관리에서는 메인 메모리를 효율적으로 사용하도록 관리한다.

  • 프로세스에게 메모리 공간 할당(allocation)
  • 메모리의 어느 부분이 어느 프로세스에게 할당되었는가 추적 및 감시
  • 프로세스 종료 시 메모리 회수(deallocation)
  • 메모리의 효과적 사용
  • 가상 메모리: 물리적 실제 메모리보다 큰 용량을 사용할 수 있다.

3. 파일 관리(File management)

디스크의 트랙(Track)과 섹터(Sector)라는 물리적인 영역파일(File)이라는 논리적인 개념으로 관리한다.
파일을 삭제하는 것은 실제로 대상 파일의 트랙과 섹터에 해당되는 부분을 지운다는 것을 뜻한다.

파일OS가 실행되는 컴퓨터에서 자주 볼 수 있는데, 이는 복잡한 과정으로 하드디스크에 저장되어 있는 것을 사용자가 편리하게 사용할 수 있도록 파일이라는 논리적 형태로 운영체제에서 관리하여 보여준다.

  • 파일의 생성과 삭제(file creation, deletion)
  • 디렉토리(Directory)의 생성과 삭제
  • 기본 동작 지원: open, close, read, write, create, delete
  • Track/sector ~ file 간의 매핑(mapping)
  • 백업(Backup)

4. 보조기억장치 관리(Secondary storage management)

보조기억장치를 효율적으로 사용할 수 있도록 관리한다.

보조기억장치는 대표적으로 하드 디스크, 플래시 메모리(주로 스마트폰에 사용)가 있다. 하드 디스크를 예로 들면, 하드 디스크에서 아무 것도 저장되어 있지 않는 공간을 block이라 하는데, 보조기억장치 관리는 이를 관리하는 것이다.

  • 빈 공간 관리(Free space management)
  • 저장공간 할당(Storage allocation)
  • 디스크 스케줄링(Disk scheduling)

5. 입출력 장치 관리(I/O device management)

입출력 장치에는 키보드, 마우스, 프린터, 스피커, 마이크 등이 있다.
입출력 장치 관리는 이와 같은 여러 입출력 장치를 사용하기 위해 존재한다.

  • 장치 드라이브(Device drivers)
  • 입출력 장치의 성능향상: buffering, caching, spooling

6. 시스템 콜(System call)

시스템 콜유저 프로세스에서 운영체제 서비스를 필요로 할 때 이를 받기 위해 사용하는 호출이다.
어플리케이션이 OS의 서비스를 받기 위한 호출.

주요 시스템 콜

  • Process: end, abort, load, excute, create, terminate, get/set attributes, wait event, signal event
  • Memory: allocate, free
  • File: create, delete, open, close, read, write, get/set attributes
  • Device: request, release, read, write, get/set attributes, attach/detache devices
  • Information: get/set time, get/set system data
  • Communication: socket, send, receive

🦕 공룡책으로 정리하는 운영체제 Ch.1

profile
(ง •̀_•́)ง

0개의 댓글