본문 바로가기
개발자 도전기/[OS] 운영체제 개념 익히기

운영체제(Operating System) | 운영체제 개요

by 답수 2021. 9. 28.
728x90
반응형

 

 

어제를 기점으로 악명이 자자한 핀토스를 시작하게 되었다. 정글 1기 분들 핀토스 얘기 나올 때마다 모두 다 하나 같이 PTSD 오시는거 보고 겁나 쫄아 있는 상태임...

 

pintOS, 이제 과제 시작되었는데 솔직히 뭔지 모르겠다. 운영진님들이 올려주신 GitBook을 보면, 핀토스는(pintos-kaist) 심플한 운영체제(x86-54) 프레임워크라고 한다. 커널 스레드, 사용자 프로그램 로드 및 실행, 파일 시스템을 지원하지만 이 모든 것을 매우 간단한 방식으로 구현할 것이라고 한다.

(이 양반들의 심플, 간단이라는 단어하고 내가 아는 단어하고 다른 단어인 듯;;)

 

여하튼 핀토스 과제를 하기 위해서는 전 글에서도 계속 얘기했던 것처럼 기본적인 OS에 대한 지식이 탑재되어 있어야 한다. 전에 malloclab이나 tiny 웹서버 만들기 과제 때는 메모리, 네트워크 등 주로 필요로 하는 부분만 교재로 공부했었지만, 그때도 항상 OS 지식에 대한 미비함에 아쉬움을 느꼈었고, 이번 기회에 제대로 운영체제를 공부하기로 했다. 핀토스가 헬이라고 하는만큼 시간이 많이 없겠지만 그래도 개념 정리할 때마다 블로그로 정리하려고 한다.

 

 

1. 운영체제(Operating System)

위키백과에서 의하면, 운영체제는  시스템 하드웨어 관리도 하고, 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공동 시스템 서비스를 제공하는 시스템 소프트웨어이다. 

 

예를 들어, 여러분이 롤이라는 응용프로그램을 실행하기 위해 그 프로세스를 실행시킬 CPU, 메모리 할당 등을 운영체제가 한다고 생각하면 된다.

 

운영체제의 역할로는

  • User Interface(편리성)
  • Resource management(효율성)
  • Process and Thread management(프로세스, 스레드 관리)
  • System management(시스템 보호)

등이 있다. 프로세스, 스레드 등 자세한 설명은 나중에 따로 포스팅하도록 하겠다.

 

 

2. 운영체제 구조

| 커널(kernel)

커널은 운영체제의 핵심 부분으로 항상 메모리 위에 상주해 있다. 프로세서(CPU), 메모리 등 가장 빈번하게 사용되는 기능들을 담당한다.

 

운영체제의 구조. 운영체제(커널)는 항상 메모리(HW)위에 상주해 있다.

 

| 유틸리티(utility)

UI 등 서비스 프로그램. 사용될 때만 메모리 위에 올라간다.

 

 

3. 운영체제의 기능

운영체제는 프로세스, 메모리, 파일, 입출력 장치, 보조 기억 장치 민 주변장치 등을 관리하는 역할을 한다.

| 프로세스 관리

프로세스란, 커널에 등록된 실행 단위를 말한다. 조금 더 쉽게 이해하려면 실행 중인 프로그램이라고 생각하면 된다. 프로세스는 사용자 요청/프로그램을 수행하는 주체(entity)이다.

 

운영체제는 프로세스를 생성/삭제, 관리를 하며 프로세스에 자원을 할당하고 프로세스 간 동기화 하는 기능이 있다. 예를 들면 PC를 이용할 때 구글 크롬을 이용하면서 동시에 카톡도 사용할 것이다. 구글을 사용한다고 카톡 사용이 안 된다거나 하지 않고 내가 사용하는 프로세스들을 같이 사용할 수 있다.

 

현재 내가 사용하고 있는 프로그램들. 백예린 목소리 ㄹㅇ 천사

지금 내가 사용하고 있는 응용 프로그램들만 해도 여러 개이지만 문제 없이 컴퓨터를 사용하고 있고, 그렇게 할 수 있게 해주는 것이 운영체제인 것이다.

 

작업 관리자를 들어가보면, 내가 사용하는 프로그램 외에도 정말 많은 프로세스들이 작동하고 있는 것을 볼 수 있다.

 

| 메모리 관리

메모리는 크게 주기억장치, 보조기억장치가 있는데 주기억장치는 우리가 자주 말하는 RAM이고, 보조기억장치는 HDD, SSD이다. 주기억장치는 작업을 위한 프로그램 및 데이터, 즉 프로세스를 올려 놓는 공간이다. 

 

OS는 멀티태스킹 시스템으로 각 프로세스에 대한 메모리를 할당하거나 회수를 하고 메모리 여유 공간을 관리한다. 또한 각 프로세스에게 할당 받은 메모리는 할당된 프로세스만이 접근할 수 있으며, 이렇게 할당 메모리 영역에 다른 프로세스가 접근하지 못하도록 하는 기능도 한다. 메모리 관련해서도 나중에 더 깊게 글을 쓰도록 하겠다.

 

| 파일 관리

우리가 아는 그 파일을 있어 보이게 설명하자면 논리적 데이터 저장 단위이다. 운영체제는 파일의 디렉토리 구조를 지원하고(e.g. User/jungle/pintos/...) 파일을 생성하거나 삭제, 접근, 매핑 등 파일 관리 기능을 담당한다.

 

| 입출력(I/O) 관리

입출력 장치는 우리가 매일 사용하는 키보드, 마우스, 모니터 등을 말한다. 입출력 장치들을 이용하는 입출력 과정은 다 OS를 거쳐야 한다. 우리가 키보드로 어떤 글을 써서 메일을 보낼 때, 내가 입력한 글들이 바로 모니터에 출력되는 것이 사실은 뒤에서 운영체제를 다 거치고 있는 것이다.

 

 

이 외에도 운영체제는 네트워크, 보안, 시스템 콜 인터페이스 호출 등 많은 기능을 한다. 다음 포스팅은 프로세스에 대해 하려고 한다.

728x90
반응형

댓글