🔥딱 8일간! 인프런x토스x허먼밀러 역대급 혜택

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

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

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

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

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

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

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

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

image

 

image

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

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

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

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

 

 

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

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

  • 애플리케이션이나, 앱이라고 불리며 Windows 운영체제에서는 .exe 모양을 하고 있음

  • 컴퓨터 관점에서 하드디스크만 사용하는 수동적인 존재

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

  • 하드디스크에 저장된 프로그램이 메모리에 올라갔을 때 실행중인 프로그램을 프로세스라 함

  • 프로세스는 메모리도 사용하고, 운영체제의 CPU 알고리즘 스케줄 알고리즘에 따라서 CPU도 사용,

  • 필요에 따라 입력, 출력을 하기 때문에 능동적인 존재

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

  • Code 영역은 자신을 실행하는 코드가 저장되어 있음

  • Data 영역은 전역 변수와 정적 변수가 저장되어 있음

  • Stack 영역에는 지역변수와 함수 호출을 했을 때 필요한 정보들이 저장됨

  • Heap 영역은 프로그래머가 동적으로 메모리를 할당하는데 쓰임

    • C언어를 예로 들면, malloc(), free() 함수를 호출하면 Heap 영역에 자원을 할당 / 해제할 수 있음

 

 

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

  • 멀티프로그래밍은 메모리에 여러 프로세스를 올려서 처리하는 방식

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

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

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

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

정리하면,

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

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

 

 

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

  • PCB Process Controll Block

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

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

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

image

 

 

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

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

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

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

댓글을 작성해보세요.

채널톡 아이콘