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

운영체제


  1. 아래의 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다. 이 방식은 폴링방식입니다. 1초마다 체크하기 때문에 성능에 좋지 않습니다. 이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?

     

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

    위의 while 문과 같이 일정 주기/시간 마다 체크하는 폴링 방식이 아니라 이벤트 리스너 등을 이용하여 호출했을 때만 실행하는 인터럽트 방식을 사용하는 것이 오버헤드가 더 적을 것이라 생각합니다.

    const onSkillActivated = function(){
      console.log('스킬이 활성화되었습니다');
    }
    
    const skillActivateEvent = function(callback) {
      document.addEventListener("skillActivated", callback);
      callback();
    }
    
    // 이벤트 리스너가 포함된 함수 실행시 실행
    skillActivateEvent(onSkillActivated);
    

     

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

     

    프로그램은 저장장치에 저장된 명령문들의 형태이고 프로세스는 프로그램이 메모리에 올라가서 실행중인 상태입니다. 프로세스는 메모리 적재가 승인이 되면 PCB가 생성됨과 동시에 실제 메모리 영역을 차지합니다.

     

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

     

    멀티프로그래밍은 메모리에 여러 개의 프로세스가 올라온 상태입니다. 반면 멀티프로세싱은 CPU가 여러 개의 프로세스를 처리하는 것입니다. 둘의 차이를 말해보자면 멀티프로그래밍은 메모리의 관점의 접근이고 멀티프로세싱은 CPU 관점의 접근입니다.

     

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

     

    운영체제는 프로세스를 관리하기 위해 여러 가지 기법을 사용합니다. 먼저 운영체제의 커널단에서는 PCB라는 자료구조를 통해 프로세스의 모든 정보를 관리합니다. 그 다음으로 컨텍스트 스위칭과 여러 스케줄링 기법(FIFO,SJF,RR,MLFQ …)을 통해 정해진 규칙에 따라 프로세스들이 공평하게 CPU 자원을 할당받을 수 있도록 조정합니다.

     

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

     

    컨텍스트 스위칭이란 프로세스를 실행하는 도중에 다른 프로세스를 실행하기 위해서 현재 실행하고 있는 프로세스의 상태를 저장하고 다른 프로세스의 상태값으로 교체하는 작업입니다. 컨텍스트 스위칭이 일어나면 PCB에 현재 상태값을 저장하기 때문에 PCB의 값(프로세스 상태, 프로그램 카운터, 레지스터 정보, 메모리 관련 정보…)이 변경됩니다.

     

댓글을 작성해보세요.

채널톡 아이콘