공부/운영체제(OS)
-
[Network, OS] Socket, I/O Multiplexing, Event Loop공부/운영체제(OS) 2024. 6. 7. 16:57
Socket → I/O Multiplexing → Event Loop 순서로 공부한 내용이다.따로따로 내용을 분리하기엔 서로 연결된 내용이 많아서 한 번에 작성했다. 0. UNIX 철학Everything is a file 객체지향에서 "모든 것은 객체로 이루어져 있다"처럼 UNIX 운영체제의 철학은 "모든 것은 파일로 이루어져 있다"이다.소켓이든, 프로그램이든, 파이프라인이든 모든게 파일로 이루어져 있다는 것이다.이 내용을 기억해두면 좋은게 '추상적 개념'이 아닌 '파일'이라는 관점으로 보아야 수월하게 이해하는데 도움이 된다. 1. 소켓이란?[1] 개념소켓은 운영체제가 제공하는 인터페이스로 애플리케이션 계층의 프로그램이 네트워크 서비스를 사용할 수 있게하는 역할을 한다. TCP/IP 4계층으로 이..
-
-
[공룡책] Ch.8 교착 상태공부/운영체제(OS) 2022. 5. 1. 22:04
이 글은 공룡책을 읽고 정리한 글입니다. 0. 소개 다중 프로그래밍 환경에서는 여러 스레드가 한정된 자원을 사용하려고 서로 경쟁할 수 있다. 한 스레드가 자원을 요청했을 때, 그 시각에 그 자원을 사용할 수 없는 상황이 발생할 수 있고, 그러면 스레드는 대기 상태로 변경된다. 이처럼 대기 중인 스레드들이 결코 다시는 그 상태를 변경시킬 수 없는 상황을 교착 상태라고 부른다. 책에서는 교착 상태를 프로세스 집합 내의 모든 프로세스가 그 집합의 다른 프로세스에 의해서만 일어날 수 있는 이벤트를 기다리는 상황으로 정의하였다. 교착 상태의 가장 좋은 예는 "두 기차가 교차로에서 서로 접근할 때, 둘 다 완전히 정지해야 하며 상대방이 없어지지 않는 한 누구도 다시 출발할 수 없다."이다. 1. 시스템 모델 시스템..
-
[공룡책] Ch.6 동기화 도구공부/운영체제(OS) 2022. 4. 27. 17:03
이 글은 공룡책을 읽고 정리한 글입니다. 0. 소개 3장에서 우리는 협력적 프로세스에 대해 배웠다. 협력적 프로세스는 논리 주소 공간을 직접 공유하거나, 공유 메모리 / 메시지 전달을 통해서만 데이터를 공유할 수 있다. 이때 공유 데이터를 동시에 접근하면 일관성을 망칠 수 있는데, 이 장에서는 논리 주소 공간을 공유하는 협력적 프로세스의 질서 있는 실행을 보장하는 것에 대해 논의한다. 1. 배경 우리는 3장에서 프로세스가 병행 또는 병렬로 실행할 수 있다는 것을 배웠고, 4장에서 CPU 스케줄러가 프로세스 사이를 오가며 모든 프로세스를 병행 실행시킨다는 것을 배웠다. 이것은 한 프로세스가 다른 프로세스가 스케줄 되기 전에 일부분만 진행한다는 것을 의미한다. 이때 한 변수에 서로 의존하는 경우 값이 변경되..
-
[공룡책] Ch 5. CPU 스케줄링공부/운영체제(OS) 2022. 4. 27. 02:56
이 글은 공룡책을 읽고 정리한 글입니다. 0. 소개 CPU 스케줄링은 다중 프로그램 운영체제의 기본이다. CPU 스케줄링을 통해 보다 더 효율적으로 CPU를 사용할 수 있다. 그래서 이 장에서는 스케줄링 개념과 여러 스케줄링 알고리즘을 소개한다. 그리고 일반적인 스케줄링을 논의하는 경우에는 프로세스 스케줄링이라는 단어를 사용하고, 스레드에 국한된 개념에는 스레드 스케줄링이라는 단어를 사용한다. 1. 기본 개념 코어가 하나인 시스템에서는 한순간에 오직 하나의 프로세스만이 실행될 수 있다. 나머지 프로세스는 CPU의 코어가 가용(available) 상태가 되어 다시 스케줄 될 수 있을 때까지 기다려야 한다. 다중 프로그래밍의 목적은 CPU 이용률을 최대화하기 위해 항상 실행중인 프로세스를 가지게 하는데 있다..
-
[공룡책] Ch 4. 스레드와 병행성공부/운영체제(OS) 2022. 4. 26. 16:35
이 글은 공룡책을 읽고 정리한 글입니다. 0. 소개 3장에서는 한 프로세스가 하나의 제어 스레드로 프로그램을 실행한다고 가정하였는데, 현대에서는 한 프로세스가 다중 스레드를 포함하는 특성을 제공한다. 그리고 다중 CPU를 제공하는 최신 다중 코어 시스템에서 스레드 사용을 통한 병렬 처리의 기회를 식별하는 것이 중요하다. 그래서 이 장에서는 스레드와 다중 스레드 컴퓨터 시스템에 대해 자세히 살펴보려고 한다. 1. 개요 스레드 - CPU 이용의 기본 단위 - 스레드 ID, 프로그램 카운터(PC), 레지스터 집합, 스택으로 구성 - 같은 프로세스에 속한 다른 스레드와 운영체제 자원들을 공유 현대 운영체제는 한 프로세스가 여러 개의 프로세스를 가지고 있어서 프로세스는 동시에 하나 이상의 작업을 수행할 수 있는점..
-
[공룡책] Ch 3. 프로세스공부/운영체제(OS) 2022. 4. 26. 14:20
이 글은 공룡책을 읽고 정리한 글입니다. 0. 소개 프로세스란 공식적으로는 모든 CPU의 활동을 말하고, 비공식적으로는 실행 중인 프로그램을 말한다. 운영체제가 복잡해질수록 커널 안에서 다양한 시스템 작업을 최선으로 처리할 필요가 있다. 그래서 하나의 시스템은 프로세스의 집합체로 일부는 사용자 코드를 실행하고, 일부는 운영체제 코드를 실행한다. 모든 프로세스는 잠재적으로 병행 실행이 가능하고, CPU는 이들 프로세스 가운데서 다중화된다. * 다중화란 장애가 발생해도 시스템 기능을 계속 수행할 수 있도록 하는 것 이번 장에서는 프로세스가 정확히 무엇인지, 운영체제에서 어떻게 표현되는지, 어떻게 작동하는지에 대해 다룰 예정이다. 1. 프로세스 개념 운영체제를 논의할 때 모든 CPU 활동들을 프로세스라고 부르..
-
[공룡책] Ch 2. 운영체제 구조공부/운영체제(OS) 2022. 4. 19. 17:17
이 글은 공룡책을 읽고 정리한 글입니다. 0. 소개 운영체제는 프로그램이 실행되는 환경을 제공해준다. 내부적으로 운영체제는 여러 다른 노선을 따라 구성되므로 각각의 노선마다 구조가 크게 차이가 난다. 그래서 운영체제를 설계하려면 여러가지 전략과 알고리즘을 잘 선택해야 한다. 운영체제를 살펴볼 때 좋은 세가지의 관점이 존재한다. - 운영체제가 제공하는 서비스에 초점을 둔 관점 - 운영체제가 사용자와 프로그래머에게 제공하는 인터페이스에 초점을 둔 관점 - 시스템의 구성요소와 그들의 상호 연결에 초점을 둔 관점 이번 장에서는 위의 관점들을 모두 살펴보면서 알아야할 내용들에 대해 다룰 예정이다. 1. 운영체제 서비스 위 그림은 운영체제 서비스에 초점을 둔 관점으로 이런 서비스는 프로그래머가 프로그래밍 작업을..