이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 동시다발적으로 실행되는 프로세스와 스레드들은 공동의 목적을 수행하기 위해 서로 협력하며 영향을 주고받기도 한다. 이렇게 협력하여 실행되는 프로세스와 스레드들은 실행 순서와 자원의 일관성을 보장해야 하기에 반드시 동기화가 되어야 한다. 프로세스 동기화란 프로세스 사이에 동기화를 하는 것을 말한다. 현재는 대부분 스레드 기준으로 문맥 교환이 일어나기 때문에 스레드 동기화라고도 불린다. 이 글에선 동기화 기법의 전체적 개념을 다루므로 프로세스 동기화와 스레드 동기화의 개념을 구분 짓지 않았으면 좋겠다. 프로세스뿐만 아니라 스레드도 동기화 대상이다. 정확히 말하면 실행의 흐름을..
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 동시다발적으로 실행되는 프로세스와 스레드들은 공동의 목적을 수행하기 위해 서로 협력하며 영향을 주고받기도 한다. 이렇게 협력하여 실행되는 프로세스와 스레드들은 실행 순서와 자원의 일관성을 보장해야 하기에 반드시 동기화가 되어야 한다. 프로세스 동기화란 프로세스 사이에 동기화를 하는 것을 말한다. 현재는 대부분 쓰레드 기준으로 문맥 교환이 일어나기 때문에 스레드 동기화라고도 불린다. 이 글에선 동기화의 전체적 개념을 다루므로 프로세스 동기화와 스레드 동기화의 개념을 구분 짓지 않았으면 좋겠다. 프로세스뿐만 아니라 스레드도 동기화 대상이다. 정확히 말하면 실행의 흐름을 갖는..
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 선입선출(FCFS:First Come First Served) 스케줄링 비선점형방식 단순히 준비 큐에 삽입된 순서대로 처리하는 스케줄링 먼저 CPU를 요청한 프로세스부터 CPU할당 프로세스들이 기다리는 시간이 매우 길어질 수 있다. (=호위효과) 최단 작업 우선 스케줄링(SJF:Shortest Job First) 선점형이나 비선점형 둘다 구현될 수 있지만 보통 비선점형으로 구현 호위 효과를 줄이기위해 고안된 스케줄링 실행 시간이 가장 짧은 프로세스에 우선순위를 매긴다. CPU 사용이 긴 프로세스는 나중이 실행, CPU 사용 시간이 짧은 프로세스를 먼저 실행 라운드 로빈(..
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 모든 프로세스들은 CPU를 필요로 하고, 모든 프로세스들은 먼저 CPU를 사용하고 싶어 한다. 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것을 CPU 스케줄링이라고 한다. CPU 스케줄링은 컴퓨터 성능과도 직결되는 중요한 문제이다. 프로세스 우선순위 단순히 생각하면 CPU를 사용하고 싶어 하는 프로세스들을 줄 세워서 차례대로 쓰게 하면 된다. 하지만 프로세스마다 우선순위(priority)가 다르기 때문에 적절하지 못한 방법이다. 우선순위가 높은 프로세스는 대표적으로 입출력 작업이 많은 프로세스이다. 입출력 작업이 많은 프로세스(=입출력 집중 프로..
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다.스레드이 글에서 다루는 내용은 소프트웨어적 스레드이며, 스레드는 실행의 단위이다.스레드란 프로세스를 구성하는 실행의 흐름 단위하나의 프로세스는 여러 개의 스레드를 가질 수 있다.스레드를 이용하면 하나의 프로세스에서 여러 부분을 동시에 실행할 수 있다. 프로세스와 스레드단일 스레드 프로세스하나의 프로세스는 한 번에 하나의 일만 처리실행의 흐름 단위가 하나라는 점에서 이렇게 실행되는 프로세스를 단일 스레드 프로세스라고 부른다. 멀티 스레드 프로세스실행 흐름이 여러 개인 프로세스프로세스를 이루는 여러 명령어 동시 실행 가능 스레드의 구성요소스레드는 프로세스 내에서 각기 다른 아..
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다.프로세스 상태(process state)우리가 컴퓨터를 사용할 때 여러 프로세스들이 빠르게 번갈아 가면서 실행된다. 그 과정에서 하나의 프로세스는 여러 상태를 거치며 실행된다. 운영체제는 프로세스의 상태를 PCB를 통해 인식하고 관리한다. 프로세스의 상태를 표현하는 방식은 운영체제마다 다르지만 대표적인 상태는 아래와 같다. 생성 상태이제 막 메모리에 적재되어 PCB를 할당받은 상태준비가 완료되었다면 준비상태가 된다. 준비 상태당장이라도 CPU를 할당받아 실행할 수 있지만 자신의 차례가 아니기에 기다리는 상태자신의 차례가 된다면 실행상태가 된다.준비 상태인 프로세스가 실행 ..
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 프로세스 프로그램은 실행되기 전까지는 그저 보조기억장치에 있는 데이터 덩어리 보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간 프로세스가 된다. 프로세스 종류 Foreground Process : 사용자가 볼 수 있는 공간에서 실행되는 프로세스 Background Porcess : 사용자가 볼 수 없는 공간에서 실행되는 프로세스 백그라운드 프로세스 중에서 사용자와 직접 상호작용할 수 있는 백그라운드 프로세스도 있지만, 사용자와 상호작용하지 않는 백그라운드 프로세스도 있다. 이러한 사용자와 상호작용하지 않는 백그라운드 프로세스를 유닉스에서는 데몬(daemon..
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 운영체제의 심장, 커널 운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나이다. 대표적인 운영체제인 리눅스를 구성하는 소스 코드는 천만 줄이 넘는다. 또한 세상에는 다양한 운영체제가 있다. 그래서 운영체제가 응용 프로그램에 제공하는 기능들, 달리 말해 운영체제 서비스 또한 매우 다양하다. 스마트폰이 사용자에게 제공하는 서비스 종류는 다양하지만, 그중에서도 전화, 문자, 인터넷 기능처럼 가장 핵심적인 서비스가 있다. 마찬가지로 운영체제가 응용 프로그램에 제공하는 서비스 종류는 다양하지만, 그중에서도 가장 핵심적인 서비스들이 있다. 이러한 운영체제의 핵심 서비..