Web/CS (ComputerScience)

운영체제(OS) 기초 정리해보기

outwater 2021. 6. 3. 16:37

부트캠프 수료 이후 나를 되돌아보며 가장 뼈저리게 느끼는 것은 
"내가 참 지름길로만 가려고 하였구나"
와 같은 생각이었다.

전공자들이 4년간 공부 후 취업하는 곳에, 4개월 부트캠프를 마치고 당연하게 취업을 하려고 했던 어떤 안일함
js도 제대로 모르면서 react를 사용하고, 또 다른 스택에 대해 눈을 돌리던 모습..

취업을 위해 달콤한 것, 지름길로만 가지말고
기본적인 CS부터, js에 대한 이해부터 그 준비를 시작하고자 한다.

서론이 길었지만 이번 포스팅에서는 OS의 기초에 대하여 공부해보고 정리해보려고 한다.
현재 나의 사전지식은 이 정도이다.
운영체제에는 Windows, 리눅스, Linux, OSX, IOS 가 존재하고, 컴퓨터를 동작하게 하는 가장 기본적인 소프트웨어이다. 

부끄럽지만 핵심들을 위주로 빠르게 OS의 기초를 공부해도록 하자.

 

운영체제(OS)

운영체제란 무엇이고 왜 만들었을까?


 운영체제(Operating System)은 사용자가 컴퓨터를 사용하기 위해 반드시 필요한 소프트웨어이다.
 컴퓨터에서 실행되는 모든 프로그램은 운영체제에서 관리하고 제어하는 것이다.
 
운영체제의 가장 큰 목적은 컴퓨터의 하드웨어를 관리하는 것이다. 
컴퓨터에는 CPU, 메모리, 디스크, 네트워크, 입출력장치(키보드, 마우스, 모니터) 등의 수 많은 하드웨어가 존재하는데, 이러한 하드웨어를 효율적으로 관리하는 것이 주된 목적인 것이다.
또 운영체제는 단순히 하드웨어를 관리하는 것 뿐만 아니라 사용자에게 편의를 제공하는 목적이 있다. 하드웨어를 관리 하여 컴퓨터(혹은 핸드폰)을 사용하는 사람에게 편의성을 제공하는 것이다.

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

운영체제의 구성요소는 무엇이 있을까?

출처: codemcd

운영체제는 크게 커널(Kernel)쉘(Shell)로 나뉜다.
커널은 운영체제의 가장 핵심으로 운영체제가 수행하는 모든 것이 저장되어있다.
쉘은 사용자가 커널에 요청하는 명령어를 해석하여 커널에 요청하고 그 결과를 출력한다.
그리고 사용자프로그램(Application)을 생각해 볼 수 있는데, 애플리케이션은 특정 OS하에 실행되어지는 프로그램으로 서로 다른 운영체제에서 실행될 수 없다.(Window프로그램 따로 Mac프로그램 따로) 

출처 : [holim0.log]


조금 더 자세하게 커널은 응용프로그램과 하드웨어(CPU, Memory, Devices) 사이에서 프로그램 수행에 필요한 서비스를 제공하고, 메모리 및 저장장치 내에서 운영체제를 관리하고 있다.
 커널은 3가지 기능을 하는데
         1) 보안 : 커널은 컴퓨터 하드웨어와 프로세스의 보안을 책임진다.
         2) 자원관리 : 커널은 한정된 시스템 자원을 효율적으로 관리하고, 프로세스에 처리기를 할당하는 스케줄링을 담당한다.

         3) 추상화 : 추상화는 복잡한 동작원리들은 내부적으로 감추고, 깔끔하고 일관성 있도록 공통 특성을 추출하는 것을 말하는데, 하드웨어에 제공하는 공통 명령어들의 집합을 만들어 추상화한다.

꼭 알아야하는 필수 개념이 있다면?

운영체제의 기본을 공부하기 위해서는 반드시 인터럽트, 프로세스, 쓰레드 등의 개념을 알아야만 한다.

0. 부팅  (Booting)

 

 부팅은 흔히 컴퓨터가 켜지는 과정을 말한다.
위의 그림은 컴퓨터의 구조를 단순화한 것인데, 부팅의 과정을 살펴보도록 하자
        1) 컴퓨터의 전원이 켜지면 프로세서(CPU)에서 ROM(비휘발성 메모리)에 내용을 읽는다.

        2) ROM 안의 POST(Power-On Self-Test), 부트로더(boot loader)가 차례대로 실행된다.
          POST는 전원이 켜지면 가장 먼저 실행되는 프로그램으로 현재 컴퓨터의 상태를 검사한다.
          POST작업 이후 바로 실행되는 부트로더는 하드디스크에서 운영체제를 찾아 RAM(메인메모리)에 가지고 와 실행한다.

        3) 운영체제는 컴퓨터의 전원이 꺼지는 시점종료하게 된다.

1) 인터럽트 

인터럽트는 예외상황이나 처리가 필요한 경우 프로세서(CPU)에게 알려 이를 처리할 수 있도록 하는 것을 뜻한다. 
인터럽트가 발생하면 이는 CPU에게 전달되고, CPU는 하던 일을 잠시 멈춘 후 인터럽트 신호를 처리하기 위해 운영체제 내부에 있는 인터럽트를 처리하는 코드(Interrupt service routine, ISR)로 이동한다. 예를 들어 부팅이후 사용자가 마우스를 움직인다면, 마우스에서 인터럽트가 발생하여 CPU로 보내게 되고, CPU는 하드웨어ISR로 보내어, 마우스가 움직일 때 해야하는 동작을 실행하도록 한다.
 인터럽트는 크게 3종류가 있는데, 마우스와 키보드와 같은 하드웨어에서 발생하는 하드웨어인터럽트(Hardware Interrupt), 명령어를 통해 직접 CPU에게 인터럽트를 전달하는 소프트웨어인터럽트 (Software Interrupt)가 대표적이고, 0으로 나누는 동작 같은 예외 상황을 처리하는 내부인터럽트 (Internal Interrupt)가 존재한다.

2) 프로세스 

 

3) 쓰레드

 

 

레퍼런스