본문 바로가기
공부/CS

기술 면접 대비 정리 - 1.1 운영체제

by son_i 2024. 2. 9.
728x90

운영체제란 ?

하드웨어 위에 설치되어 하드웨어 게층과 다른 소프트웨어 계층을 연결하는 소프트웨어 계층이다.

 

컴퓨터 시스템의 자원을 관리하고, 사용자가 컴퓨터를 사용할 수 있는 환경을 제공하는 역할을 수행한다.

 

CPU, 메모리와 같은 컴퓨터 자원은 제한적이라서 자원을 관리하는 일은 매우 중요하다.

 

또한, 사용자와 컴퓨터 간 인터페이스를 제공해 사용자가 컴퓨터를 편리하게 사용할 수 있는 환경을 제공한다.

대표적인 OS는 windows, mac os, linux, unix 등이 있다.

 


 

운영체제의 목적

OS는 한정된 컴퓨터 자원을 관리하는 시스템이다. 이러한 역할에 기반해 4가지 목적이 있다.

 

- 처리 능력 향상 : OS는 자원 관리를 통해 일정 시간 내에 시스템이 처리하는 일의 양을 향상시킨다.

 

- 반환 시간 단축 : OS는 사용자가 시스템에 요청한 작업을 완료할 때까지 소요되는 시간을 단축시킨다.

 

- 사용 가능도 향상 : 사용 가능도는 시스템 자원을 얼마나 빨리 제공할 수 있는가를 의미한다. OS는 사용자가 컴퓨터를 사용해아 할 때 자원을 즉시 사용할 수 있게 한다.

 

- 신뢰도 향상 : 신뢰도는 시스템이 주어진 문제를 정화갛게 푸는지를 의미한다. OS는 입력 값에 대한 정확한 결과값을 줄수 있도록 신뢰도를 향상해야한다.

 

OS는 하드웨어와 소프트웨어를 이어주는 계층으로 한정된 자원 안에서 정확하고 빠르게 주어진 문제를 해결하는 것이 목적이다. 그래서 OS 성가 평능 기준으로 처리능력, 반환 시간, 사용 가능도, 신뢰도가 사용되기도 한다.

 


 

CPU와 메모리 구조

CPU는 컴퓨터의 뇌 역할을 하며, 컴퓨터에서 프로그램을 실행하는데 필요한 연산을 처리하고 수행한다.

다른 말로 프로세서 라고도 한다.

 

메[모리는 데이터를 저장하기 위한 기억 장치로, 휘발성 메모리인 주 기억장치와 비 휘발성 메모리인 보조 기억장치가 있다.

 

주 기억장치는 메인 메모리를 의미하며 일반적으로 RAM을 가리킨다. -> 휘발성

 

보조 기억장치는 SSD(Solid State Driove), HDD(Hard Disk Drive) 등이 해당한다. -> 비휘발성

 

메모리는 CPU에서 빨리 접근할 수 있도록 계층구조로 나뉜다.

 

레지스터 <-> 캐시 <-> RAM <-> 하드디스크

----------cpu---------

속도빠름-----------------------------------속도느림 

 

- 레지스터 : CPU가 사용자 요청을 처리하는데 필요한 데이터를 임시로 저장하는 기억장치이다. CPU 내부에 존재하며 접근 속도가 빠르다.

 

- 캐시 메모리(cache memory) : CPU와 RAM사이의 속도 차이를 해결하기 위한 기억장치다. CPU 내부에 위치하며 접근 속도가 레지스터 다음으로 빠르다.

 

- RAM(Random Access Memory) : 컴퓨터에서 프로그램을 실행할 때 필요한 정보를 저장한다. CPU에서 접근 속도가 하드 디스크보다 빠르고, 휘발성 기억장치다. 보통 메모리라고 할 때 RAM을 의미하는 경우가 많다.

 

- 하드디스크 : 사용자가 필요한 데이터와 프로그램을 저장한다. 비휘발성 기억장치

 


 

커널과 시스템 콜

커널은 OS의 핵심 요소로, 컴퓨터 하드웨어와 프로세스의 보안, 자원관리, 하드웨어 추상화 같은 중요한 역할을 수행한다. 특히 자원 관리를 위해 CPU 스켸줄링, 메모리 관리, 입출력 관리, 파일 시스템 관리등을 담당한다.

 

운영체제는 커널에서 관리하는 중요 자원에 사용자가 쉽게 접근하지 못하도록 커널모드와 사용자모드로 모드를 나눈다.

커널 모드에서는 하드웨어에 직접 접근해 메모리, CPI와 같은 자원을 사용할 수 있다.

사용자 모드에서는 커널 모드의 자원에 접근할 수 없게 제한을 둔다.

 

사용자 모드에서 실행된 프로세스가 자원에 접근하려면 시스템 콜을 호출해 커널에 요청해야한다.

 

여기서 시스템 콜은 사용자 모드에서 커널모드에 접근해 필요한 기능을 수행할 수 있게 하는 시스템 함수다. 커널은 시스템 콜로 받은 요청을 처리한 후 다시 시스템 콜로 결과값을 반환한다.

 

시스템 콜을 사용해 프로세스 제어, 파일 조작, 장치관리, 데이터의 유지보수, 통신, 보호를 할 수 있다.

시스템 콜의 대표적인 예로는 프로세스를 생성하는 fork(), 부모 프로세스가 자식 프로세스의 수행을 기다리는 wait() 등이 있다.

 

시스템 콜에서 커널에 매개변수를 전달하는 방법은 3가지
1. 매개변수를 CPU의 레지스터에 직접 전달. 이 방식은 매개변수의 개수 > 레지스터의 개수 일경우 문제가 될 수 있어 비권장.

2. 매개변수를 메모리에 저장한 후 메모리의 주소 값을 레지스터에 저장

3. 매개변수를 프로그램의 스택(stack)에 push 하고 OS에서 pop해 매개변수 전달.

예상 질문

 

1. 시스템 콜 설명

시스템 콜은 커널 모드와 사용자모드 간에 필요한 정보를 주고 받기 위해 호출하는 함수.
OS는 사용자가 하드웨어의 주요 자원에 쉽게 접근할 수 없게 커널 모드와 사용자 모드로 구분한다.
따라서 프로세스에서 자원에 접근해 작업을 처리해야 할 때는 시스템 콜로 필요한 요청을 하고, 그에 대한 결과 값을 돌려받게 된다,.

 

2. 프로세스의 메모리 구조 설명

프로세스의 메모리 영역은 스택, 힙, 데이터, 코드로 나눌 수 있다.
스택은 지역변수와 함수의 매개변수가 저장되는 영역이고
힙은 동적 메모리 할당이 일어나는 영역이다,.
데이터 영역에는 전역변수, 정적변수, 배열, 구조체 등이 저장. 데이터 영역은 다시 BSS영역과 데이터 영역으로 나눌 수 있다.
코드 영역은 기계어가 저장되는 공간이다.