- Operating System(운영체제)
- System Programing(시스템 프로그래밍)
- Computer Architecture(컴퓨터 구조)
- Network(네트워크)
- Database(데이터베이스)
운영체제란 무엇입니까?
응용 프로그램이 요청하는 시스템 리소스를 효율적으로 분배하고 지원하는 소프트웨어
운영체제의 주요 목적은 무엇입니까?
시스템 자원 관리, 사용자와 컴퓨터간의 커뮤니케이션 지원, 응용프로그램 관리
커널, API, 시스템콜이란?
커널 : 커널은 하드웨어와 응용프로그램 사이에서 인터페이스(System Call)를 제공하여 응용 프로그램이 하드웨어에서부터 오는 자원(CPU, 메모리, 저장장치, 모니터)을 관리하고 사용할 수 있게 해준다. 즉, OS의 API기능을 담당하는 부분.
API : 응용프로그램이 OS와 요청을 주고 받는 인터페이스를 API라고 함.
시스템콜 : OS가 제공하는 서비스를 어플리케이션에 제공하는 인터페이스로, API 내부에는 시스템콜을 호출하는 형태로 만들어진다. 시스템콜의 종류로는 프로세스 제어(생성, 종료, 시그널), 파일 및 IO 관리, 통신 등이 있다.
운영체제 - 배치 처리 시스템, 멀티 태스킹, 멀티 프로그래밍
배치처리시스템은 무엇이고 어떤 단점이 있는가?
배치처리 시스템은 등록된 여러 프로그램들을 컴퓨터 프로그램의 실행 요청 순서에 따라 순차적으로 실행하는 방식.
단점 : 만약 어떤 프로그램이 실행 시간이 너무 많이 걸린다면, 다음 프로그램이 실행되는데 너무 많이 기다려야 한다. 동시에 여러 프로그램을 실행 시킬 수 없으며 다중 사용자의 지원이 어렵다.
시분할 시스템이란?
시분할 시스템은 다중 사용자 지원을 위해 컴퓨터 응답시간을 최소화하는 시스템. 각 어플리케이션이 실행될수 있도록 잘게 잘라서 배치하는 것.
멀티 태스킹과 멀티 프로세싱의 차이점은?
멀티 태스킹은 단일 CPU에서 여러개의 쪼개진 프로세스가 실행되도록 하는 갓. 반면 멀티 프로세싱은 여러 CPU에 하나의 프로그램을 병렬로 실행해서 실행속도를 극대화 시키는 시스템.
선점 스케줄링과 비선점 스케줄링의 차이점은?
선점 스케줄링은 높은 우선순위의 프로세스가 들어올 경우 현재 프로세스를 중지시키고, 높은 우선순위의 프로세스를 처리. 비선점 스케줄링은 한번 할당하면 끝날때까지 다른 프로세스가 들어오지 못하는 스케줄링 엄격한 비선점식 스케줄링을 사용하지 않는 이유는 짧은 프로세서가 오랫동안 대기하게 될 경우 비효율적이고, 기아상태가 발생할 수 있다.
스케줄링이 필요한 이유?
한정적인 메모리(자원)를 효율적으로 관리하기 위해, 공정성을 주기 위해 필요하다.
스케줄러와 CPU 스케줄러의 차이에 대하여 설명해보세요.
스케줄러(=Job Scehduler, 장기 스케줄러)는 디스크와 메모리 간 스케줄링을 담당한다.
CPU 스케쥴러(= 단기 스케줄러)는 메모리와 CPU 간 스케줄링을 담당한다.
FCFS 스케줄링을 개선한 스케줄링 방식에 대하여 설명해보세요..
FCFS는 먼저 도착한 프로세스에게 CPU를 할당하는 기법이다.
하지만 먼저 도착한 프로세스가 실행 시간이 긴 경우 나중에 도착한 프로세스들의 대기 시간이 길어지는 Convoy Effect 라는 문제점을 가지고 있다.
이를 개선한 SJF(Shortest Job First) 기법이 있다.
SJF는 짧은 실행시간을 갖는 프로세스에게 CPU를 먼저 할당하는 기법이다.
Convoy Effect는 해결하였지만, 실행시간이 긴 프로세스는 계속 CPU를 할당받지 못하는 Starvation 현상이 일어날 수 있다.
Round Robin 스케줄링 방식에서 time quantum 설정에 따른 결과를 설명해보세요.
타임퀀텀이 긴 경우: 타임퀀텀이 프로세스의 실행시간과 비슷해진다면 FCFS랑 다를 바 없어진다.
타임퀀텀이 짧은 경우: 타임퀀텀이 짧아 Context Switching이 자주 일어나게 되어 오버헤드가 발생한다.
오버헤드가 어떤건가요?.
프로그램의 실행 흐름 도중에 동떨어진 위치의 코드를 실행시켜야 할 때, 추가적으로 시간, 메모리, 자원이 사용되는 현상을 오버헤드라 한다.
다음 스케줄링 알고리즘을 설명하시오 - FCFS.
다음 스케줄링 알고리즘을 설명하시오 - SJF.
다음 스케줄링 알고리즘을 설명하시오 - SRT.
다음 스케줄링 알고리즘을 설명하시오 - Priority Scheduling.
다음 스케줄링 알고리즘을 설명하시오 - Round Robin.
인터럽트란?
CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 장치와 커뮤니케이션 할때나, 예외상황이 발생하여 처리가 필요할 경우가 생길 수 있다. 이때 CPU에 알려서 처리하는 기술을 인터럽트라고 한다.
내부/외부 인터럽트는 어떤 상황들이 있는지?
내부 인터럽트는 하드웨어 고장, 실행할 수 없는 명령어, 명령어 실행 오류, 사용 권한 위배 등이 있다.
- 하드웨어 고장은 컴퓨터 고장 또는 비트 오류
- 명령어 실행 오류는 나누기 0과 같은 경우
- 사용 권한 위배는 말 그대로 사용자가 OS만 접근 가능한 곳에 엑세스 한 경우
외부인터럽트는 보통 외부 입력장치에 의해 발생
- 컴퓨터 종료(전원버튼누르기)
- 타이머 인터럽트(타이머가 일정 시간 간격으로 인터럽트 요청)
- 입출력 인터럽트(입출력 장치가 입출력 완료를 알리기 위해 인터럽트 요청)
컨텍스트 스위칭이란?
멀티 프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값을 저장하고 CPU가 다음 프로세스를 수행하도록 개로운 프로세스의 상태 또는 레지스터 랎을 교체하는 작업을 Context Switching이라고 한다.
프로세스 제어 블록이란?
한 프로세스가 다른 프로세스에 자원에 접근하는 방법은 무엇이 있나?
한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다. 파이프, 메시지큐, 공유메모리, 시그널등을 이용할 수 있다.