기술면접/운영체제

운영체제

EnoughTT 2023. 8. 21. 21:04

⁉️ OS (운영체제)란?

하드웨어, 시스템 리소스를 제어하고 프로그램에 대한 일반적 서비스를 지원하는 시스템 소프트웨어입니다.

 

⁉️ 커널이란?

커널은 운영체제에서 핵심이 되는 부분으로 컴퓨터의 하드웨어들을 관리하는 역할을 합니다. 이 커널은 user와 대화를 할 수 없으며, 컴퓨터의 관련된 일만 할수있습니다. 그래서 user와 대화하기 위해서는 쉘(shell)을 사용합니다.

 

⁉️ 메모리의 구조를 영역에 따라 설명

[OS] 프로세스 메모리 구조 (코드, 데이터, 스텍, 힙) (tistory.com)

프로세스의 주소 공간은 코드 (code)데이터 (data)스택 (stack)힙 (heap) 영역으로 구성됩니다.

 

코드 (code, text) 영역 : 사용자가 작성한 프로그램 함수들의 코드가 CPU에서 수행할 수 있는 기계어 명령 형태로 변환되어 저장되는 공간입니다.

 

데이터 (data, static) 영역 : 프로그램이 사용하는 데이터 공간으로 전역변수, static 변수가 저장됩니다. 프로그램이 시작하는 동시에 할당되며, 프로그램이 종료되면 소멸합니다.

 

힙 (heap) 영역 : 프로그래머가 필요할 때 사용하는 공간입니다. 런타임시 크기가 결정되고, new 로 생성한 object가 많아질수록 힙 영역의 크기가 늘어납니다. 자바 GC에 의해 관리됩니다.

 

스택(heap) 영역 : 함수의 수행을 마치고 복귀할 주소 및 데이터가 있습니다. 지역변수, 매개변수, 리턴값 등이 해당됩니다.

컴파일 시 크기가 결정됩니다. 함수의 호출과 함께 할당되고, 함수의 호출이 종료되면 소멸합니다.

 

⁉️ 프로세스와 스레드 설명과 차이점

프로세스 : 프로세스는 실행중인 프로그램을 말하며, 메모리 영역을 가지고 있습니다. 독립적이기 때문에 메모리 영역을 다른 프로세스와 공유하지 않습니다. 프로세스는 최소 1개의 스레드를 가지고 있습니다.

 

스레드 : 스레드는 프로세스 내에서 stack 영역만 별로도 갖고, 나머지 영역에 대해서는 다른 스레드와 공유합니다.

 

⁉️ 컨텍스트 스위칭 (Context Switching, 문맥교환)에 대해 설명, 필요한 이유

여러 프로세스를 처리해야 하는 상황에서 현재 진행중인 Task의 상태를 PCB에 저장하고, 그 다음 진행 할 Task의 상태값을 읽어 레지스터에 적재하는 과정을 말합니다.

컨텍스트 스위칭을 진행하는 동안 다른 작업을 할 수 없는데, 이 시간 보다 I/O 작업이 더 오래 걸리기 때문에 컨텍스트 스위칭을 하는 것이 더 효율적입니다. 또한, 컨텍스트 스위칭이 있기 때문에 여러 프로세스를 처리할 수 있습니다.

 

⁉️ 멀티 프로세스와 멀티 스레드 설명

멀티 프로세스 : 멀티 프로세스는 동시에 여러 프로세스를 실행하는 방식입니다. 각 프로세스는 독립적인 메모리 공간과 자원을 가지며, 서로 간에는 직접적인 메모리 공유가 없습니다.

 

멀티 스레드 : 멀티 스레딩은 하나의 프로세스 내에서 여러 스레드를 실행하는 방식입니다. 스레드는 프로세스 내의 실행 단위로, 같은 메모리 공간을 공유합니다.

 

⁉️ 멀티 스레드 환경에서 주의해야 할 점

다수의 쓰레드가 공유 데이터에 동시에 접근하는 경우에 상호배제 또는 동기화 기법을 통해 동시성 문제 또는 교착 상태가 발생하지 않도록 주의해야 합니다.

 

⁉️ 시스템 콜 (System Call)이란?

시스템 콜은 사용자 모드에서 실행되는 프로그램이 운영 체제의 커널에 서비스를 요청할 때 사용하는 인터페이스입니다.

 

⁉️ 인터럽트란?

프로세스 실행 도중 예기치 않은 상황이 발생할 때 발생한 상황을 처리한 후 실행 중인 작업으로 복귀하는 것을 말합니다.

 

⁉️ 데드락 (DeadLock) 설명

두개 이상의 프로세스나 스레드가 서로 자원을 기다리면서 무한 대기 상태를 의미합니다.

데드락이 발생하기 위한 조건 4가지

  • 상호 배 (Mutual Exclusion) : 자원은 한 번에 하나의 프로세스만이 사용할 수 있어야 합니다.
  • 점유 대기 (Hold and Wait) : 하나의 자원을 소유한 상태에서 다른 자원을 기다려야합니다.
  • 비선점 (Non - preemption) : 한 프로세스가 다른 프로세스의 자원을 강제로 뺐을 수 없습니다.
  • 순환 대기 (Circular Wait) : 각 프로세스가 순환 구조로 자원을 대기해야합니다.

 

⁉️ 뮤텍스 (Mutex)와 세마포어 (Semaphore) 설명

뮤텍스 (Mutex) :  락 (Lock)을 사용해 하나의 프로세스나 쓰레드를 단독으로 실행하게 합니다.  반드시 락을 획득한 프로세스가 락을 해제해야합니다.

 

세마포어 (Semaphore) : 주로 동시에 실행될 수 있는 스레드나 프로세스의 최대 허용 수를 제한하는 데 사용됩니다. 현재 수행중인 프로세스가 아닌 다른 프로세스가 세마포어를 해제 할 수 있습니다.

 

⁉️ 선점형 스케줄링과 비선점형 스케줄링 차이점

선점형은 하나의 프로세스가 다른 프로세스 대신에 CPU를 차지할 수 있음을 말하고, 비선점형은 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음을 말합니다.

 

⁉️ 가상메모리란?

프로그램이 물리적인 메인 메모리(RAM)의 크기보다 큰 메모리 영역을 사용할 수 있게 해주는 기술입니다. 가상메모리를 사용하게 되면 RAM의 크기보다 큰 프로그램을 실행할 수 있고, 여러 프로그램을 동시에 실행 할 수 있습니다. 하지페이지 폴트가 빈번하게 발생하면 시스템의 전반적인 성능이 저하될 수 있습니다.

 

 

 

 

 

 

 

참고
참고 1

참고 2