[CS] 컴퓨터 공학 퀴즈_3 풀이

Alicia·2022년 11월 10일
0

제로베이스

목록 보기
6/15

1. 프로세스 스케줄링

1) 프로세스에 설정된 우선 순위는 프로세스 스케쥴러에 따라 효과가 없을 수도 있다.
2) nice() 함수를 사용하여 프로세스의 우선 순위를 설정할 수 있다.
3) getpriority() 함수를 사용하면 프로세스, 프로세스 그룹, 유저에 따른 우선 순위를 읽어올 수 있다.

  • 시분할 시스템: 다중 사용자 지원을 위해, 컴퓨터 응답시간을 최소화하는 시스템

  • 멀티 태스킹: 단일 CPU에서 여러 응용 프로그램이 동시에 실행하는 것처럼 보이는 시스템

  • 멀티 프로그래밍: 최대한 CPU를 일정 시간당 많이 활용하는 시스템

!! 프로세스에서 다음 실행할 명령어의 주소를 가지고 있는 레지스터는? PC



2. 운영체제 스케쥴러

  • 한정적인 메모리를 여러 프로세스가 효율적으로 사용할 수 있도록 다음 실행 시간에 실행할 수 있는 프로세스 중에 하나를 선택하는 역할

(1) Job Queue(batch queue)

  • 시스템 안의 모든 프로세스의 집합

(2) Ready Queue

  • ready 상태의 메인메모리 안에 상주하는 모든 프로세스의 집합

(3) Device Queue

  • I/O 장치 사용을 대기하는 프로세스들의 집합


3. 멀티 프로세싱

다수의 프로세서가 협력적으로 일을 처리하는 것을 의미, 여기서 주의해야 할 점은 프로세스가 아니라 프로세서이다. 다수의 프로세서가 다수의 작업을 함께 처리하는 것을 의미.



4. 라운드로빈 / 우선순위 기반 / 선점형,비선점형 스케쥴러

-우선순위 기반 : Windows에서 채택하고 있는 대표적인 선점형 스케줄링 알고리즘 중 하나인 우선순위 스케줄링 알고리즘은 각각의 프로세스마다 우선순위를 부여해서 우선순위가 높은 프로세스를 먼저 실행시키는 방식이다.

-라운드로빈 : Windows에서 채택하고 있는 대표적인 선점형 스케줄링 알고리즘 중 하나인 라운드 로빈 스케줄링 알고리즘은 우선순위가 동일한 프로세스의 경우, 형평성 유지를 위해서 정해진 시간 간격만큼만 실행을 하고 우선순위가 동일한 다른 프로세스에게 CPU의 할당을 넘기는 방식을 제공한다.

-비선점형 : 비선점형 OS는 현재 실행중인 프로세스보다 높은 우선순위의 프로세스가 등장한다고 해서 실행의 대상을 바로 변경하지 않는다.

새로 등장한, 보다 높은 우선순위의 프로세스가 실행되기 위해서는 현재 실행중인 프로세스가 명시적으로 CPU를 양보할 때 까지 또는 I/O 작업 등으로 현재 실행중인 프로세스가 블로킹 상태에 놓일 때 까지 기다려야 한다.

오늘 날 대부분의 OS는 프로그래머가 사용하는 키보드, 혹은 마우스 입력에 민감하게 반응하고 프로그래머와 대화를 계속하면서 그 결과에 따라 프로그램을 구동하는데, 이러한 시스템을 인터렉티브 시스템이라고 한다. 비선점형 OS의 경우 이러한 인터렉티브한 프로그램을 구현 시 프로그래머의 의존도가 높아지는 문제점이 생긴다.



5. 인터럽트

외부 인터럽트 vs 내부 인터럽트
   : 외부적인 입출력 장치가 원인인지, 잘못된 명령이나 잘못된 데이터를 사용할때인지

소프트웨어 인터럽트 : 사용자가 프로그램을 실행시키거나 감시프로그램(Supervisor)을 호출하는 동작을 수행하는 경우

시스템 콜과 인터럽트: 시스템 콜 호출을 위해 강제로 코드에 인터럽트 명령 (int 0x80) 을 넣어 CPU에 전달함



6. 일반적인 프로세스 구조

TEXT(CODE) : 프로그램 코드가 저장되는 공간
DATA
STACK : 함수 실행을 위한 지역 변수등이 저장된 공간
Heap : 동적으로 할당된 메모리를 저장하는 영역



7. 배치 처리 시스템

큐 자료구조와 같은 FIFO 방식이며 한번데 등록된 여러 프로그램들을 컴퓨터 프로그램의 실행 요청 순서에 따라 순차적으로 실행하는 방식이다.


8. 프로세스간 커뮤니케이션(Inter-process Communication, IPC)

  • 파이프(Pipe)는 단방향으로만 데이터 전송이 가능하다.
  • Pipe는 부모 프로세스에서 자식 프로세스로 데이터를 전송할 수 있다.
  • Message Queue는 부모-자식 프로세스 뿐만 아니라 임의의 두 프로세스간 데이터 전송에 사용될 수 있다.




9. 시스템 콜

시스템콜 함수: open() , write(), read()
시스템 콜의 구현 방법 : CPU는 사용자 모드를 커널 모드로 바꿔준다.
IDT에서 0x80에 해당하는 주소를 찾아서 실행한다. 해당 시스템 콜 함수를 실행 한 후, 커널 모드에서 사용자 모드로 변경하고 해당 프로세스의 다음 작업을 수행한다.


10. 스레드

쓰레드 별로 register따로, stack따로 있다. code와 data를 공유.

레지스터를 갖고있기 때문에 별도로 동시에 실행이 가능하다

  • 기본적으로는 하나의 프로세스에서는 여러 개의 쓰레드를 생성할 수 있다.

  • 쓰레드들 간에는 동일 프로세스의 데이터를 접근할 수 있다.

  • 쓰레드는 Light Weight Process 라고도 불리운다.

    	장단점

    장점 - 1)쓰레드간 커뮤니케이션시 IPC 와 같은 기법을 사용할 필요가 없다라는 점이다.
              2) 사용자에 대한 응답성을 향상시킬 수 있다라는 점이다.
              3)여러 쓰레드를 생성하고, 실행해도 성능이 저하되지 않는다는 점이다.

**단점** -  스레드 중 한 스레드만 문제가 있어도, 전체 프로세스가 영향을 받음, 스레드를 많이 생성하면, Context Switching이 많이 일어나, 성능 저하
  • 예: 리눅스 OS에서는 Thread를 Process와 같이 다룸
    스레드를 많이 생성하면 모든 스레드를 스케쥴링 해야 하므로, Context Switching이 빈번할 수밖에 없음.

0개의 댓글