인프런 워밍업 클럽 스터디 2기 - CS 1주차 미션

운영체제

 

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

while(true){
      wait(1); // 1초 멈춤
      bool isActivated = checkSkillActivated(); // 체크
    } 
  • 인터럽트 방식

  • 이벤트 형식 -> 입출력이 완료되면 CPU에게 신호를 보냄 -> 신호를 받은 CPU는 ISR을 실행시켜 작업을 완료함

  • 폴링 방식은 CPU가 입출력 관리자에게 주기적으로 확인함 -> 비효율적

     


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

 

  • 프로그램은 명령문의 집합체

  • 프로세스는 프로그램이 실행될 때 메모리 위에 올라간 것 -> 즉 실행 중인 프로그램(메모리와 CPU를 사용 중임)


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

     

  • PCB

     

     

  • 프로그램이 실행되고 프로세스가 만들어질 때 PCB가 함께 생성

     

  • PCB에는 해당 프로세스의 정보를 가지고 있는 자료구조(포인터, 프로세스 상태 등등)


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

     

  • 프로세스를 실행하는 도중 다른 프로세스를 실행하기 위한 작업

     

  • 다른 프로세스를 실행하기 위해 실행중인 프로세스A의 작업 내용을 PCB(A)에 저장

  • 이후 실행할 프로세스의 작업 내용이 담긴 PCB(B)를 토대로 CPU가 세팅됨


    자료구조

     

    여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다.

    이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요?

    이유를 함께 적어주세요.

     

     

     

     

  • 배열

  • 교실의 학생 정보 -> 크기가 정해져있음

  • 학생 정보를 저장하고 열람 -> 참조한다. 인덱스로 빠르게 접근이 가능하기 때문에 배열을 사용한다(O(1)의 성능을 가지고 있음)

     

     


     

    여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다.

    주문은 들어온 순서대로 처리됩니다.

    이 때 여러분이라면 어떤 자료구조를 선택하실 건가요? 이유를 함께 적어주세요.

     

     

  • 들어온 순서대로 처리 -> 선입선출

댓글을 작성해보세요.

채널톡 아이콘