🎁[속보] 인프런 내 깜짝 선물 출현 중🎁

CS 전공지식 스터디 3기 [1주차] 운영체제 미션

CS 전공지식 스터디 3기 [1주차] 운영체제 미션

CS 전공지식 스터디 3기 [1주차] 운영체제 미션

 

Q1.

  while(true){
      wait(1); // 1초 멈춤
      bool isActivated = checkSkillActivated(); // 체크
    }

위 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다. 이 방식은 폴링방식입니다.

1초마다 체크하기 때문에 성능에 좋지 않습니다.

이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?

 

A1.

폴링 방식은 일정 주기마다 지속적으로 CPU가 입출력 관리자에게 입출력이 왔는지 확인하는 방식입니다.

하지만 일정 주기마다 지속적으로 CPU가 확인하기 때문에 성능이 좋지 않다는 단점이 존재합니다.

 

이를 해결하기 위해선 폴링 방식을 보완한 인터럽트 방식을 적용해야 합니다.

 

인터럽트 방식은 출력이 완료되었을 때 CPU에게 신호를 주어 인터럽트 서비스 루틴을 실행하는 방식입니다.

인터럽트 여기서 서비스 루틴이란 특정 인터럽트가 들어오면 그 인터럽트를 처리하는 함수입니다.

인터럽트 방식을 적용하면 일정 주기마다 지속적으로 CPU가 입출력 관리자에게 입출력이 왔는지 확인하는 것이 아니라,

입출력이 올 때마다 CPU에게 신호를 주어 인터럽트 서비스 루틴을 실행하기 때문에 CPU의 사용량을 줄일 수 있습니다.


 

Q2. 프로그램과 프로세스가 어떻게 다른가요?

 

A2.

프로그램은 하드디스크 등과 같은 저장장치에 저장된 명령문의 집합체입니다.

저희가 플레이하는 게임이나, 뮤직 플레이어 같은 것들이 프로그램입니다.

 

프로세스는 프로그램이 실행되어 하드디스크에 저장되어 있던 프로그램이 메모리에 올라가게된 프로그램을 의미합니다.

프로세스는 코드 영역, 데이터 영역, 스택 영역, 킵 영역을 갖고 있습니다.

또한 메모리도 사용하고 운영체제의 CPU 스케줄링 알고리즘에 따라서 CPU도 사용하고 필요에 따라 입력과 출력을 하기 때문에 능동적인 존재이기도 합니다.


 

Q3. 멀티 프로그래밍과 멀티 프로세싱이 어떻게 다른가요?

 

A3.

멀티 프로그래밍은 하나의 CPU가 여러 프로세스를 번갈아 실행하는 것을 의미합니다.

멀티 프로그래밍의 특징으로는 CPU 이용률 극대화하고 병렬 처리가 아닌 시분할 방식을 사용합니다.

또한 비선점형 스케줄링에 많이 사용합니다.

 

멀티 프로세싱은 여러 개의 CPU가 동시에 여러 프로세스를 처리하는 것을 의미합니다.

특징으로는 병렬 처리 가능하고 선점형 스케줄링 적용하며, 다중 코어 시스템에서 사용합니다.


 

Q4. 운영체제는 프로세스를 관리하기 위해서 어떤 것을 사용하나요?

 

A4.

운영체제는 프로세스를 관리하기 위해 PCB(Process Control Block) 를 사용합니다.

PCB는 운영체제가 각 프로세스를 관리하기 위해 유지하는 데이터 구조체입니다.

PCB의 역할로는 프로세스의 상태, 메모리 정보, CPU 레지스터 정보 등을 저장하는 기능을 수행합니다.

PCB 의 구조는

  • PID (Process ID)

  • 프로세스 상태

  • 프로그램 카운터

  • CPU 레지스터

  • 메모리 관리 정보

  • 입출력 상태 정보

  • 우선순위

등으로 구성되어 있습니다.

 

프로그램 카운터가 필요한 이유는 어떤 프로세스가 실행되다가 다른 프로세스에게 CPU를 뺏기고 다시 실행될 때 원래 실행하던 명령어가 실행되어야 하기 때문에 프로그램 카운터가 꼭 있어야 합니다.


 

Q5. 컨텍스트 스위칭이란 뭔가요?

 

A5.

컨텍스트 스위칭은 실행 중인 프로세스의 상태(레지스터, 스택, 프로그램 카운터 등)를 저장하고, 새로운 프로세스로 전환하는 과정입니다.

주로 CPU가 여러 프로세스를 처리하는 환경에서 발생합니다.

하지만 오버헤드가 존재하기 때문에, 빈번한 컨텍스트 스위칭은 성능 저하를 유발할 수 있습니다.

댓글을 작성해보세요.


채널톡 아이콘