100%를 한번에 바꾸는건 어려워도 1%를 100번 바꾸는건 쉽다.

생각정리 자세히보기

컴퓨터공학/운영체제

[운영체제] 운영체제 개론

dc-choi 2024. 11. 26. 16:05
반응형

동시성과 병렬성

동시성: 여러 가지 일이 동시에 진행되는 것

병렬성: 같은 일을 여러 주체가 함께 동시에 진행하는 것

원자성, 동기화 그리고 교착상태

동시성하면 항상 따라오는 이야기가 원자성이다.

두가지 일이 동시에 자원을 선점하는 경우 기다려야하는 상황이 발생하기도 한다.

이런 상황을 정리할 수 있는 동기화라는 개념이 나오게 된다.

 

화장실에 비유를 들어서 이야기를 하자면 화장실에 진입하면 Lock이 걸리고 화장실을 나오면 UnLock을 하게 된다.

화장실을 선점하고 있는 구간이 원자성이 보장될 수 있는 구간이다.

 

원자성: 동시에 일이 일어나도 자원을 선점하고 있다면 그것을 보장할 수 있도록 하는것

 

동기화: 누군가 선점을 하고 있는 동안은 원자성을 보장할 수 있도록 하는 것

 

교착상태: 자원을 선점하기 위해서 서로 대기하는 상태

컴퓨터의 구성요소

컴퓨터는 하드웨어와 소프트웨어로 구성된다.

소프트웨어는 어플리케이션과 시스템으로 나뉜다.

가장 대표적인 시스템 소프트웨어는 OS(Operation System)이다.

 

프로그램은 설치하는 것이다.

프로그램을 실행하면 프로세스가 생성된다.

스레드는 프로세스 속에 존재하는 실행단위이다.

스레드는 프로세스에게 할당된 자원을 공유한다.

 

용도에 따른 기억공간의 구분

스택: 스레드가 사용함. 스레드 하나당 스택을 가지고 있음.

힙: 프로세스 전체가 사용하며 공유됨.

 

동시성 같은 문제로 인해 기억공간을 구분하게 됨.

 

세상에 비유를 하면서 설명

컴퓨터라는 세상에서 당신의 유전자는 프로그램

나는 프로세스라는 모습으로 존재함.

나라는 프로그램의 대표적인 예가 쉘이다.

국가와 국민으로 이해하기

국가를 이루는 것은 영토, 영공, 영해다.

그 위에 정부 조직이 있는 것이다.

그리고 그 위에 국민이 있다.

 

영토, 영공, 영해라는 물리적인 영역이 있다.

정부 조직이라는 논리적인 영역이 있다.

국민이 살아가기 위해서는 살아가기 위한 공간이 있어야 한다.

 

국가를 만약 컴퓨터라고 한다면…

영토, 영공, 영해는 하드웨어가 된다.

정보 조직은 시스템 소프트웨어다. (OS) 

국민을 프로그램이라고 하고 국민이 살 공간이 프로세스가 되는 것이다.

국민이 점유하는 공간은 다른 국민이 침범할 수 없다.

그래서 정부가 자기만의 공간을 가질 수 있도록 이를 보장한다.

 

프로세스가 동시에 존재하는 것을 멀티 태스킹 환경이라고 한다.

하지만 OS로부터 동시성과 원자성을 부여받는다고 한다.

 

하지만 경찰처럼 남의 공간에 침범할 수 있는 프로그램이 있는데 그것이 디버거이다.

운영체제의 핵심이라고 부를 수 있는 것은 커널이라고 한다.

커널 모드, 유저 모드

OS의 핵심은 kernel이며 컴퓨터라는 국가의 법은 커널로 구현된다.

커널 영역과 사용자 영역은 완전히 다른 세상이다.

커널의 역할은 입출력 제어, 자원(CPU + RAM) 관리, 접근 제어

 

하드웨어 영역은 물리적이다.

소프트웨어 영역은 논리적이다. (로지컬과 버추얼은 비슷한 말이다.)

OS(커널)는 하드웨어에 의존적이다. 그래서 64비트 운영체제면 64비트 CPU가 와야 한다.

하드웨어에 디바이스가 있다면 그 장치를 사용하기 위한 드라이버가 있다. (펌웨어)

그리고 커널 모드에서의 엔진이라는 요소가 있는데 이건 핵심 코어 부분이다. (그래픽 엔진)

유저 모드에서는 각각의 독립적인 프로세스가 있다.

 

커널 모드와 유저모드의 차이는 굉장히 크다.

이 두개를 연결하기 위해 인터페이스가 있다.이 인터페이스는 파일의 형태를 가지고 있다.

일반적인 파일과 다르게 이 파일은 디바이스 파일이라고 부른다.

더 자세하게 설명하자면 커널의 구성 요소(엔진 or 코어)에 대한 추상적인 인터페이스를 유저모드에 제공해줌.

프로세스는 인터페이스를 통해 입출력을 하게 되고 입출력은 크게 read, write, execute로 되어 있다.

모니터에 무언가를 출력한다고 하면 실제 하드웨어를 직접 통제할 일이 없다. OS가 전부 통제하고 있다.

프로세스가 인터페이스에 접근할 수 있는 권한을 얻기 위해서는 OS에서 디바이스 파일에 접근할 권한을 부여해줘야 한다.

 

결론적으로 정리하자면 다음과 같다. 디스크에 접근하는 경우를 예로 들어 다시 설명

하드웨어인 디스크가 있고 그 디스크에 접근하기 위한 드라이버(펌웨어)가 있다.

커널 모드에서는 해당 드라이버에 접근할 수 있는 파일 시스템이 있다.

그리고 유저모드에서는 이 파일 시스템을 추상화한 인터페이스가 있다.

가상 메모리

메모리 체계를 좀 더 추상적으로 논리적으로 관리하는 것이다.

페이지와 페이징에 대해서 좀 더 이야기를 할 수 있다.

페이징을 아예 안하는 것을 논페이징이라고 한다.

페이징 파일은 RAM처럼 사용하는 하드디스크 영역이다 라는 말이 있다.

굉장히 속도가 느려지겠지만 프로세스를 많이 띄울 수 있다.

RAM에서 하드디스크로 이동하는 것을 페이지 아웃이라고 부른다. (swap out)

다시 RAM으로 불러오는 것을 페이지 인이라고 부른다. (swap in)

어플리케이션은 실제로 RAM에서 불러오는지 디스크에서 불러오는지 모른다.

 

결론적으로 사용하는 이유는 다음과 같다.

각 프로세스 공간을 완벽하게 분리하고 통제할 수 있다.

프로세스 오류가 운영체제에까지 영향을 주지 못하도록 차단할 수 있다.

메모리가 부족해도 여러 프로그램들이 작동하는 등 자원을 효율적으로 사용할 수 있다.

반응형