🔥새해맞이 특별 라이브 선착순 신청🔥

워밍업 클럽(CS) 첫번째 미션📓

워밍업 클럽(CS) 첫번째 미션📓

운영체제

1번

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

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

A : 인터럽트

🔎개념

  • 폴링 : 주기적으로 CPU가 확인해줘야 하니 성능이 좋지 않다.

  • 인터럽트 : 폴링 방식의 단점을 해결

     

    • 하드웨어 인터럽트 : 입출력 등과 같은 인터럽트

    • 소프트웨어 인터럽트 : 사용자 프로그램에서 발생한 인터럽트

       

      • 예시) 유효하지 않은 메모리 접근, 0으로 나누는 명령

     

2번

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

A : 프로그램이 메모리에 올라가 실행 중일 때를 프로세스라고 부른다.

🔎개념

  • 프로그램

     

    • 하드디스크 등과 같은 저장장치에 저장된 명령문의 집합체

    • 애플리케이션이나 앱이라고 불림

    • Windows 운영체제에서는 .exe 파일의 모습

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

  • 프로세스

     

    • 실행중인 프로그램

    • 하드디스크에 저장된 프로그램이 메모리에 올라갔을 때

    • 메모리도 사용, 운영체제의 CPU 스케줄링 알고리즘에 따라 CPU도 사용, 입출력 사용하는 능동적 존재

  • 프로세스의 구조

     

    • Code 영역 : 자신을 실행하는 코드 저장

    • Data 영역 : 전역 변수와 Static(정적) 변수 저장

    • Stack 영역 : 지역 변수, 함수 호출시 매개변수와 돌아갈 주소가 저장

    • Heap 영역 : 프로그래머가 런타임시 할당할 수 있는 메모리 공간

     

     

3번

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

A : 멀티프로그래밍은 메모리의 관점, 멀티프로세싱은 CPU의 관점으로 정의

🔎개념

  • 유니프로그래밍 : 메모리에 프로세스 1개

  • 멀티프로그래밍 : 메모리에 여러 개의 프로세스

  • 멀티프로세싱 : CPU가 여러 개의 프로세스를 처리하는 것

 

4번

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

A : PCB(Process Control Block)

🔎개념

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

  • PCB들은 연결리스트로 저장

  • 운영체제는 프로세스가 종료되면 연결리스트에서 해당 프로세스의 PCB 제거

  • PCB의 구조

     

    • 포인터 : 부모와 자식 프로세스에 대한 포인터, 할당된 자원에 대한 포인터, 프로세스의 한 상태에서 다른 상태로 전환될 때 저장하는 포인터

    • 프로세스 상태 : 현재 프로세스의 다섯가지 상태(생성, 준비, 실행, 대기, 완료)

    • 프로세스 ID : 프로세스를 식별하기 위한 숫자

    • 프로그램 카운터 : 다음에 실행될 명령어의 주소를 포함하는 프로그램 카운터 저장

    • 레지스터 정보 : 프로세스가 실행될 때 사용했던 레지스터 값

       

      • 프로그램 카운터와 마찬가지로 CPU를 뺏기고 다시 시작할 때 이전에 사용하던 값을 복구하기 위한 용도

    • 메모리 관련 정보 : 프로세스가 메모리에 있는 위치 정보, 메모리 침범을 막기 위한 경계레지스터 값

    • CPU 스케줄링 정보 : CPU 스케줄링에 필요한 우선순위, 최종 실행시간, CPU 점유시간 등

 

5번

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

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

🔎개념

  • 컨텍스트 스위칭이 일어날 때 PCB의 내용이 변경됨

  • 실행중인 프로세스의 작업내용을 PCB에 저장하고 실행될 기존 프로세스의 PCB의 내용대로 CPU가 다시 세팅

  • 컨텍스트 스위칭이 일어날 때 PCB의 프로세스 상태, 프로그램 카운터, 각종 레지스터값 등이 변경

 

자료구조와 알고리즘

1번

Q : 여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다. 이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요? 이유를 함께 적어주세요.
A : 연결리스트, 데이터의 추가와 삭제가 간단한 작업으로 가능하기 때문에 학생이 전학을 오고 갈 때 관리가 쉬울 것으로 판단했습니다.

 

2번

Q : 여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다. 주문은 들어온 순서대로 처리됩니다. 이 때 여러분이라면 어떤 자료구조를 선택하실 건가요? 이유를 함께 적어주세요.

A : 큐, FIFO 먼저 들어간 데이터가 먼저 나오는 규칙이기 때문에 순서대로 들어온 주문을 처리하기 위해선 큐 자료구조가 적합하다고 판단했습니다.

 

 

 

 


댓글을 작성해보세요.

채널톡 아이콘