본 포스팅은 인프런 공룡책 강의를 기반으로 한 스터디 개인 정리를 위한 포스팅입니다. 잘못된 부분이 있다면 언제든 지적해주시면 감사하겠습니다! 1. 프로세스 동기화 동시다발적으로 실행되는 프로세스와 쓰레드들은 서로 협력하면서 영향을 주고받게 되는데 이 과정에서 자원의 일관성을 보장해야 함. 프로세스 동기화란 ? 실행순서 제어 : 프로세스를 올바른 순서대로 실행하기 글 쓰는 프로세스가 먼저 실행된 후 읽는 프로세스가 실행되어야 정상적으로 데이터가 넘어가기 때문. 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 Bank account problem 프린터처럼 한 번에 하나의 프로세스만 접근해야 하는 자원 Producer & Consumer Problem 공유 자원과 임계 구역..
본 포스팅은 인프런 공룡책 강의를 기반으로 한 스터디 개인 정리를 위한 포스팅입니다. 잘못된 부분이 있다면 언제든 지적해주시면 감사하겠습니다! Concept 멀티 프로그래밍 된 운영체제에서 적용하는 개념 💡 멀티 프로그래밍이란? ⇒ 한 개의 프로세서가 하나의 프로세스를 수행하는 동안 다른 프로세스에 접근할 수 있도록 하는 방법 ⇒ 멀티 프로그래밍을 하려면 CPU의 처리속도가 빠르고 남는 시간이 있는 경우 Context Switching을 통해 다수의 프로세스를 접근할 수 있어야 함. 간단하게 설명해서 Ready Queue에 있는 프로세스들 중에 어떤 것을 Running Queue에 넣어 CPU할당을 시킬 것인지를 CPU Scheduling이라 함. 단순히 FIFO-Queue를 통해 먼저 큐에 들어온 프로..
본 포스팅은 인프런 공룡책 강의를 기반으로 한 스터디 개인 정리를 위한 포스팅입니다. 잘못된 부분이 있다면 언제든 지적해주시면 감사하겠습니다! Overview 메모리 상에 여러개의 프로세스가 적재되어있고 하나의 CPU가 Context Switch를 통해 작업이 수행되는 멀티 프로그래밍 구조를 배웠음. 하나의 프로세스가 여러개의 threads of control을 가질 수 있음. 프로세스(process)란? 프로세스(process)란 단순히 실행 중인 프로그램(program) 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것. 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성. 스레드(thread)란? 스레드(thread)란 프로세스(..
이전 글에서 프로그램 내에서 자식 프로세스를 만들어 여러가지 명령어를 처리하는 방법에 대해서 배웠는데, 이번 글에서는 새롭게 프로세스를 만들어 처리하지 않고 쓰레드를 사용하여 명령어를 처리하는 방법에 대해서 알아 보도록 합시다. ● 프로세스 vs 쓰레드 Process : 프로그램의 실행상태를 의미하며 프로세스 생성 시 상태정보 및 PCB를 생성합니다. Thread : 프로세스의 작업단위를 의미하며 쓰레드 생성 시 PCB는 공유를 하며, 오로지 스택만을 생성합니다. ● 쓰레드를 사용하는 이유 -> 보통 리눅스 시스템에서 서버 프로그램은 수많은 클라이언트의 요청에 대해 응답을 하기위해 여러 프로세스를 만들어 task를 처리합니다. 하지만 주어진 task가 경량화된 작업일 경우에는 쓰레드를 이용하여 한개의 프..