뮤텍스와 세마포어에 대해서 정리를 해보자.하지만 그 전에 임계 구역과 상호 배제에 대해서 알아보면서 뮤텍스와 세마포어에 대해서 정리를 해보자.임계 구역(Critical Section)임계 구역이란 공유 자원(Shared Resource)에 접근하는 코드 영역을 말한다. 여러 프로세스나 스레드가 동시에 실행되는 환경에서 공유 자원을 동시에 수정하거나 접근할 경우, 데이터의 일관성이 깨지거나 예기치 못한 오류가 발생할 수 있다. 이를 Race Condition(경쟁 상태)라고 하며, 이 문제를 방지하기 위해 임계 구역을 정의한다.임계 구역에서는 한 번에 하나의 프로세스/스레드만 접근할 수 있어야 하며, 이를 보장하는 것이 바로 상호 배제(Mutual Exclusion)이다. 상호 배제(Mutual Exclu..
1. Dining philosophers problem(식사하는 철학자 문제) 5명의 철학자가 원탁에 앉아서 식사를 한다. 철학자들 사이에는 포크가 하나씩 놓여 있고, 철학자들은 다음의 과정을 통해 식사를 한다.1. 일정 시간 생각을 한다.2. 왼쪽 포크가 사용 가능해질 때까지 대기한다. 만약 사용 가능하다면 집어든다.3. 오른쪽 포크가 사용 가능해질 때까지 대기한다. 만약 사용 가능하다면 집어든다.4. 양쪽의 포크를 잡으면 일정 시간만큼 식사를 한다.5. 오른쪽 포크를 내려놓는다.6. 왼쪽 포크를 내려놓는다.7. 다시 1번으로 돌아간다. 간단하게 생각해, 만약 모든 철학자들이 동시에 자신의 왼쪽 포크를 잡는다면, 모든 철학자들이 자기 오른쪽의 포크가 사용 가능해질 때까지 기다려야 한다. 그런데 모든 철..
운영체제란 무엇인가운영체제(OS, Operating System)는 컴퓨터 하드웨어와 소프트웨어를 관리하고, 사용자와 컴퓨터 간의 인터페이스를 제공하는 시스템 소프트웨어다. 쉽게 말해, 컴퓨터의 두뇌 역할을 하며 다양한 프로그램이 원활하게 실행될 수 있도록 지원하는 역할을 한다. 운영체제는 사용자에게 편의를 제공하는 목적도 가지고 있다. 운영체제가 없다면 위에서 말한 하드웨어에 관한 모든 관리를 사용자가 해야한다는 점과 같이 컴퓨터를 사용하는데 매우 불편함을 겪을 것이다. 하지만 현재 많은 발전을 거쳐온 운영체제가 설치된 컴퓨터는 사용하기에 매우 편리하다는 것을 느낄 수 있다. 대표적으로 스마트폰이 있다. 스마트폰 역시 컴퓨터의 일종이고 운영체제가 설치되어 있다. 그리고 스마트폰은 남녀노소 누구나 할 것..
컨텍스트 스위칭이란 무엇인지 정리를 해보자. 컨텍스트 스위칭이 무엇인가에 대해서 알아보기전에 컨테스트가 무엇인지 알고가자. 컨텍스트(Context) 란 운영체제에서 컨텍스트란 어떤 프로그램이 실행중인 일체의 상황을 말한다. 그 일체의 상황은 메모리와 CPU레지스터들에 고스란히 담겨 있는데 메모리에는 프로그램의 코드와 전역 변수 데이터, 힙(동적 할당받아 저장한 데이터), 그리고 호출된 함수들의 매개변수와 지역변수 등이 저장된 스택이 있다. 그리고 CPU의 PC레지스터에는 현재 실행 중인 코드의 메모리 주소가, 데이터 레지스터에는 이전에 실행된 결과 값이나 현재 실행에 사용될 데이터 값들이, 상태 레지스터에는 현재 CPU의 상태 정보가, SP레지스터에는 스택의 톱 주소가 저장되어 있다. 컨텍스트 스위칭이란..
이전에 프로세스와 스레드에 대하여 정리를 한 적이 있지만, 공부하기 위해서 다시 정리를 하기로 하였다. 단순 프로세스와 스레드에 대한 설명은 생략하고, 차이점에 대해서만 집중적으로 정리를 해보자면 실행 단위 프로세스는 운영체제로부터 자원을 할당받아 독립적으로 실행되는 프로그램 단위이다. 각각의 프로세스는 독립된 주소 공간, 파일, 메모리등을 가지며, 각각이 별도의 작업을 수행한다. 스레드는 프로세스 내에서 실행되는 작업단위로, 프로세스의 자원을 공유하면서 실행됩니다. 스레드는 동일한 프로세스 내에서 여러 개가 동시에 실행 될 수 있으며, 주소 공간과 자원을 공유하면서 작업을 수행합니다. 자원 공유 각각의 프로세스는 독립된 주소 공간을 가지고 있기 때문에 자원 공유가 어렵다. 프로세스 간에 자원을 공유하기..
요구 페이징이란? 요구 페이징(demand paging)은 운영체제에서 사용되는 가상 메모리 관리 기법중 하나이다. 요구페이징은 프로세스가 실행되는 동안 필요한 페이지만 메모리에 올리고, 필요하지 않은 페이지는 디스크에 저장하여 메모리를 절약하는 방법입니다. 이를 위해 페이지 테이블에 페이지의 위치 정보와 함께 각 페이지의 접근 여부를 표시하여 필요한 페이지만 메모리에 올리게 된다. 요구 페이징의 장점 효율적인 메모리 사용 : 요구페이징은 물리적 메모리 공간을 아끼면서 프로세스가 필요한 페이지만 메모리에 적재하므로 메모리 사용이 효율적입니다. 빠른 프로세스 실행 : 요구 페이징은 필요한 페이지만 적재하므로 디스크에서 메모리로 페이지를 로드하는 작업이 빠릅니다. 이는 프로세스 실행속도를 높이는데에 도움이 ..
CPU 스케줄링이란 CPU 스케줄링은 운영체제가 CPU를 효율적으로 활용하기 위한 방법입니다. 이는 여러 프로세스들 중에서 어떤 프로세스를 먼저 실행할지, 얼마나 오랫동안 실행할지 등을 결정하는 일련의 과정을 말합니다. CPU 스케줄링은 시스템 성능을 높이고, 시스템 자원을 효율적으로 사용하여, 다양한 작업을 보다 빠르게 처리할 수 있도록 도와줍니다. CPU 스케줄링은 규모에 따라 장기, 중기, 단기 스케줄링으로 구분된다. CPU 스케줄링은 프로세스들의 우선순위와 요구사항에 따라 CPU 자원을 할당하는 방법입니다. 이러한 CPU 스케줄링 방법은 프로세스의 규모와 적용 시기에 따라 장기, 중기, 단기 스케줄링으로 구분됩니다. 장기 스케줄링: 시스템에 새로운 프로세스가 들어올 때, 어떤 프로세스를 메모리에 ..
참조의 지역성이란? CPU가 프로그램을 실행하는 동안 짧은 시간 범위 내에 일정 구간의 메모리 영역을 반복 참조(액세스)하는 경향이 있는데 이것이 참조의 지역성이라고 한다. 참조의 지역성 특성 참조의 지역성은 프로그램이 가지는 기본적인 실행 특성이다. 프로세스의 실행동안 메모리가 균일하게 참조되지 않고 특정 부분이 집중 참조된다. 참조의 지역성은 지역성(locality), 지역성의 원리(principle of locality)라고도 부른다. 프로세스는 최근에 참조한 데이터와 코드를 다시 참조하는 경향이 있다. 프로세스가 실행되는 동안 메모리 영역을 옮겨 다니면서 참조의 지역성이 나타난다. 경험적 관찰에서 발견한 90/10 규칙은 "프로그램 코드의 10%가 프로그램 전체 실행 시간의 90%를 소비한다"는 ..