JW's Blog

Make stuff people want


  • Home

  • About

  • Tags

  • Categories

  • Archives

OS공부 - 스케쥴링 정책

Posted on 2021-12-22 | In Ⅲ. CS Study , Operating System | Comments:

몇 가지 가정

프로세스가 동작하는 일련의 행위를 워크로드 (workload) 라고 한다. 프로세스 스케쥴링을 이해하기 위해, 먼저 현실과는 동떨어진 워크로드를 가정하고 해당 가정들을 하나하나 제거할 수 있는 스케쥴링 정책들을 알아볼 것이다.

  • 모든 작업은 같은 시간 동안 실행 된다.
  • 모든 작업은 동시에 도착한다.
  • 작업은 일단 시작하면 최종적으로 종료될 때 까지 실행된다.
  • 모든 작업은 CPU만 사용하며, 입출력을 수행하지 않는다.
  • 각 작업의 실행 시간은 사전에 알려져 있다.
Read more »

OS공부 - 제한적 직접 실행

Posted on 2021-12-15 | In Ⅲ. CS Study , Operating System | Comments:

본 포스팅부터 Remzi 교수님의 Operating Systems: Three Easy Pieces로 교재를 갈아탑니다.

Limited Direct Execution

cpu를 가상화 하기 위해, 우리는 시분할 (time-sharing) 아이디어를 도입했다. 한 프로세스를 잠시 동안 실행하고, 다른 프로세스를 또 잠깐 실행하고, 이런식으로 계속해서 잠깐씩 실행시키면 된다. 그런데 여기에는 두가지 문제점이 있다.

  • 성능 저하 : 계속 process를 바꾸는 것은 시스템에 과중한 overhead를 줄 수 있어, 이것은 성능 저하로 이어진다.
  • 제어 문제 : cpu에 대한 제어를 유지하면서 process를 효율적으로 실행해야 한다. 그렇지 않으면 한 프로세스가 영원히 실행되거나, 접근해서는 안되는 정보에 접근할 수 있다.

어떻게 하면 cpu 가상화를 성능과 제어를 유지하면서 구현할 수 있을까? 본 포스트에서는 위의 두 문제를 해결하는 기법인 제한적 직접 실행 (Limited Direct Execution)에 대해서 알아볼 것이다.

Read more »

OS공부 - 프로세스 스케쥴링

Posted on 2021-12-13 | In Ⅲ. CS Study , Operating System | Comments:

프로세스 스케쥴링

우리는 일반적으로 많은 프로그램을 동시에 사용하고 있다.
실행 중인 프로그램을 프로세스라고 하기에, 많은 프로세스가 동시에 동작하고 있다고 생각할 수 있겠다.
하지만, 가장 기본적인 cpu core 구성이라고 가정하였을 때 하나의 프로세스가 cpu를 점유하고 있으면 다른 프로세스는 이를 기다려야 한다.
그렇다면, 누가 먼저 실행되고 누가 나중에 실행되는가? 나중에 실행되는 프로세스는 이전 프로세스가 종료될 때 까지 계속 기다려야 하는가? 이런 의문점들이 생긴다.
또한, 우리는 cpu를 최대한 효율적으로 사용함과 동시에 위에 언급한 대로 하나의 프로그램이 아니라 여러 개의 프로그램과 동시에 상호작용을 하고 싶다. 유튜브 보면서 카카오톡도 하고, 게임도 해야할 것 아닌가? 이러한 상황에 직면하면, 우리는 프로세스를 스케쥴링 (Process Scheduling) 하는 것이 얼마나 중요한 것인지 깨닫게 된다.
이번 포스트에서는 아직 multiprogramming까지는 다루지 않고, 프로세스들 간의 교환이 어떻게 이루어지는지를 먼저 살펴본다.

Read more »

백준 1018번 - 체스판 다시 칠하기

Posted on 2021-12-12 | In Ⅱ. Programming , 코딩 테스트 문제 풀이 , 브루트 포스 | Comments:

코테 풀이들은 대부분 길어서 더보기 클릭을 하지 않으면 보이지 않도록 해당 문구를 추가합니다.

Read more »

백준 2178번 - 미로 탐색

Posted on 2021-12-08 | In Ⅱ. Programming , 코딩 테스트 문제 풀이 , DFS와 BFS | Comments:

코테 풀이들은 대부분 길어서 더보기 클릭을 하지 않으면 보이지 않도록 해당 문구를 추가합니다.

Read more »

OS공부 - 프로세스 정의

Posted on 2021-12-06 | In Ⅲ. CS Study , Operating System | Comments:

프로세스의 정의

프로세스 (process) 란, 실행 중인 프로그램을 뜻한다.

HDD, SSD와 같은 스토리지에 우리가 작성한 코드 파일이 있을 것이다. 이런 명령어들의 집합으로 구성된 프로그램을 실행시키게 되면 해당 정보들이 메모리에 로드 된다. 해당 프로그램은 이제 cpu가 fetch해서 연산할 수 있는 상태가 되는데, 해당 상태에 있는 프로그램을 프로세스 라고 할 수 있겠다. 이제 이 프로세스는 cpu를 점유하거나, 파일을 열거나, I/O 장치들과 신호를 주고 받게 될 것이다. 운영체제가 해야 하는 가장 기본적인 활동은 바로 프로세스를 관리하는 것이다.

Read more »

OS공부 - 운영체제의 개념과 구조

Posted on 2021-12-04 | In Ⅲ. CS Study , Operating System | Comments:

운영 체제의 정의

운영 체제 (Operating System)에 대해서 다시 정의를 짚어보고 넘어가자.

  • OS는 컴퓨터의 하드웨어를 manage하는 소프트웨어이다.
  • OS는 컴퓨터 유저와 컴퓨터 하드웨어간의 매개 역할을 수행한다.

이해를 돕기 위해 우리는 컴퓨터 시스템이 어떻게 구성되어 있는지 알아야 한다. 크게 4가지 component로 구성되어 있는데, 하드웨어, 운영체제, 응용 프로그램, 그리고 유저 이다. 유저가 행하는 다양한 프로그래밍이 접근하는 프로그램은 컴파일러, 어셈블러, 텍스트 에디터, 데이터베이스 시스템 등 다양하다. 이러한 시스템 프로그래밍 혹은 어플리케이션 프로그래밍을 할때 운영체제와 통신하면, 운영체제가 대신 하드웨어에 접근하는 방식으로 구성되어 있다. 아래의 그림을 참고하자.

Read more »

백준 2667번 - 단지번호붙이기

Posted on 2021-12-02 | In Ⅱ. Programming , 코딩 테스트 문제 풀이 , DFS와 BFS | Comments:

코테 풀이들은 대부분 길어서 더보기 클릭을 하지 않으면 보이지 않도록 해당 문구를 추가합니다.

Read more »

OS공부 - 인트로

Posted on 2021-11-30 | In Ⅲ. CS Study , Operating System | Comments:

운영 체제 과목을 본격적으로 들어가기 전, 인트로적인 내용을 정리했다. 앞으로 공룡책이라고 불리는 Siberschatz et. al. 의 Operating System Concepts 10th Ed.를 따라가면서 공부할 것이다.

운영 체제 (Operating System)는 컴퓨터 시스템을 운영하는 소프트웨어를 의미한다. 그러면 컴퓨터는 무엇인가? 무엇을 보고 컴퓨터라고 하나?
컴퓨터의 정의는 다음과 같이 되어 있다.

A machine that processes the information

Read more »

백준 1260번 - DFS와 BFS

Posted on 2021-11-29 | In Ⅱ. Programming , 코딩 테스트 문제 풀이 , DFS와 BFS | Comments:

코테 풀이들은 대부분 길어서 더보기 클릭을 하지 않으면 보이지 않도록 해당 문구를 추가합니다.

Read more »
12…7
Jeongwook, Kim

Jeongwook, Kim

Love code, travel, and game
63 posts
22 categories
38 tags
RSS
0%
© 2021 Jeongwook, Kim
Powered by Hexo v3.8.0