inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[인프런 워밍업 클럽 3기] CS - 1주차 미션 (운영체제)

재영
0

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

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

1초마다 체크하기 때문에 성능에 좋지 않습니다. 이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?

스킬을 언제 사용했는지 알 수 없기 때문에 주기적으로 계속 체크하는 폴링 상황은 성능에 좋지 않음

이때, 인터럽트 방식을 사용할 수 있음

수업에서 예시로 설명되었던 입출력 관리자의 예시를 생각해보면,

image

 

image

CPU는 입출력 관리자에게 명령을 내리고 CPU는 다른 일을 진행

입출력 관리자는 입출력이 완료되었을 때 CPU에게 신호를 줌

CPU는 그 신호를 받아 인터럽트 서비스 루틴을 실행시켜 작업을 완료하는 형식으로 처리

문제와 결합하여 생각해보면, 인터럽트 신호를 플레이어가 스킬을 사용한 경우라고 볼고, 플레이어가 스킬을 사용하면 (인터럽트) 알리도록 설정하면됨

 

 

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

프로그램 : 하드디스크와 같은 저장장치에 저장된 명령문의 집합체.

프로세스 : 실행중인 프로그램

프로세스는 코드, 데이터 힙, 스택 영역으로 구성

 

 

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

CPU는 프로세스를 실행하다가 I/O 작업을 만나면 해당 프로세스에서 발생한 I/O 작업은 기다리면서 다른 프로세스를 실행 → CPU가 쉬는 시간이 줄어들며, 효율성이 올라감

여기서 프로세스가 IO 작업이 있을 때만 다른 프로세스를 실행하는 것이 아닌,

모든 프로세스를 짧게 실행하며 모든 프로세스를 동시에 실행시키는 것 처럼 느끼게 하는 기술을 멀티 태스킹이라고함

이때, CPU가 하나가 아닌 여러 개를 사용하는 상황을 멀티프로세서라 부르며, 멀티프로세서로 작업을 처리하는 것을 멀티프로세싱이라고 함

정리하면,

멀티프로그래밍은 단일 CPU 관점에서 메모리에 여러 프로세스를 올려서 처리하는 방식이고,

멀티프로세싱은 다중 CPU 관점에서 여러 프로세스가 짧게 실행되며 프로세스를 동시에 시키는 것처럼 느끼게 하는 상황

 

 

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

운영체제는 여러개의 프로세스를 전부 다 관리하고 공평하게 실행시켜야함

운영체제는 프로세스가 만들어지면 해당 프로세스의 정보를 가지고 있는 PCB를 만들고 저장

PCB는 연결리스트 자료구조 형태로 저장되며, PCB의 구조는 다음과 같음

image

 

 

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

컨텍스트 스위칭 Context Switching 우리말로는 문맥 교환이라고함

프로세스를 실행하는 중에 다른 프로세스를 실행하기 위해 실행중인 프로세스의 상태를 저장하고 다른 프로세스의 상태값으로 교체하는 작업을 말함.

컨텍스트 스위칭이 일어날 때 PCB의 내용이 변경되며, 실행중인 프로세스의 작업 내용을 PCB에 저장하고 실행 될 기존 프로세스의 PCB의 내용대로 CPU가 다시 세팅됨

인프런워밍업클럽3기 CS 1주차 미션 운영체제

답변 0