CS/운영체제(OS)(11)
-
[운영체제] 뮤텍스와 세마포어
공유된 자원에 여러 프로세스가 동시에 접근하면서 문제가 발생할 수 있다. 이 때, 공유된 자원의 데이터는 한 번에 하나의 프로세스만 접근할 수 있도록 제한을 둬야 한다. 이를 위해 나온 것이 세마포어이다. 세마포어 : 멀티프로그래밍 환경에서 공유 자원에 대한 접근을 제한하는 방법 임계 구역(critical section) 여러 프로세스가 데이터를 공유하며 수행될 때, 각 프로세스에서 공유 데이터를 접근하는 프로그램 코드 부분 공유 데이터를 여러 프로세스가 동시에 접근할 때 잘못된 결과를 만들 수 있기 때문에, 한 프로세스가 임계 구역을 수행할 때에는 다른 프로세스가 접근하지 못하도록 해야 한다. 세마포어 자바를 통해 세마포 구조(block-wakeup 방식)를 간단히 살펴보면 아래와 같다. class S..
2022.10.07 -
[운영체제] IPC(Inter Process Communication)
메모리는 두 가지 영역, user space 와 kernel space 로 이루어져 있다. user space 일반 프로세스들이 동작하는 공간, user space에 있는 일반 프로세스들은 kernel space에 접근하지 못한다. (system call을 통해 software interrupt를 일으키는 경우 제외) kernel space 커널이 수행하는 코드가 있는 공간, 운영체제가 cpu를 잡고 작업할 때, kernel space에서 작업이 이루어짐 IPC(Inter Process Communication) 프로세스 간의 커뮤니케이션을 지원하기 위한 기법, 크게 두 가지가 있다. 굳이 IPC가 필요한 이유? 도입된 이유? 그냥 다른 process의 주소 공간에 접근하면 되잖아? → 프로세스 A가 프..
2022.10.07 -
[OS] PCB와 Context Switching
Process Management Process Management는 CPU가 프로세스가 여러 개일 때, CPU 스케줄링을 통해 관리하는 것을 말한다. 이 때, CPU는 각 프로세스가 누군지 알아야만 관리가 가능하게 된다. 따라서, 프로세스를 구분하기 위해 저장하는 정보를 Process Metadata라고 한다. Process Metadata는 다음과 같은 정보들이 있다. Process ID : PID(Process Identification Number) 라고도 한다. 프로세스 고유 식별 번호 Process State (Process 상태) 프로세스의 현재 상태 (준비, 실행, 대기 상태)를 기억시킨다. Program Counter (계수기) 다음에 실행되는 명령어의 주소를 기억시킨다. Process ..
2022.08.20 -
[OS] 프로세스와 스레드의 차이?
자세한 버전 프로세스 : 실행중인 프로그램을 가리키며, 디스크로부터 메모리로 적재되어 CPU의 할당을 받을 수 있다. 프로세스는 생성될 때 각각 별도의 주소 공간에 할당되며 코드, 데이터, 힙, 스택 영역을 가지게 된다. 멀티 프로세스의 장점은 각 프로세스 간에 독립적으로 동작하기 때문에 서로 영향을 끼치지 않는다. 단점으로는, 각각 독립된 메모리 영역을 가지고 있어 다른 프로세스와 데이터 공유 간 IPC를 해야하는 등의 오버헤드가 존재하고, Context Switching에 대한 오버헤드를 가진다. 스레드 : 프로세스의 실행 단위를 가리킴. 프로세스와 달리 스레드는 다른 스레드와 공간, 자원을 공유한다. 멀티 스레드의 장점으로는 전역 변수와 정적 변수에 대한 자료를 공유할 수 있고, 단점으로는 하나의 ..
2022.08.20 -
[OS] 운영체제란?
하드웨어와 소프트웨어 사이에 위치 운영체제의 목적 사용자에게 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공 하드웨어의 복잡한 동작을 다루는 부분은 운영체제에서 담당, 유저는 하드웨어의 동작에 대해 몰라도 된다. 컴퓨터 시스템의 자원(CPU, memory)을 효율적으로 관리 운영체제의 종류 : MSDos, Mac, Windows, IOS, Android MSDos에서는 한 번에 하나의 작업만을 수행 가능 사용자 프로그램(application)은 특정 OS에 맞춰서 만든다. (IOS 기반 앱이 안드로이드에서 동작하지 못함) 부팅 과정 컴퓨터의 전원이 켜지면 프로세서는 메모리 0번지(Rom)에 위치하는 POST(power-on-self-test)를 실행시킴 POST는 boot loader를 실행시키고,..
2022.08.20 -
[운영체제] 가상메모리
운영체제가 어떤 식으로 프로세스에게 메모리를 할당할 것인가 여러 프로그램이 동시에 수행되는 시분할 환경에서는 한정된 메모리 공간을 여러 프로그램이 조금씩 나누어 사용 가상메모리(virtual memory) : 프로세스마다 각각 0번지로부터의 주소공간을 가지고 이들 공간 중 일부가 물리적 메모리에 적재되고(당장 수행해야 할 부분) 일부는 디스크의 스왑 영역에 존재하게 된다. 프로세스의 주소 공간을 메모리에 적재하는 방식에 따라 요구 페이징 방식과 요구 세그먼테이션 방식으로 구현될 수 있다. 1. 요구 페이징 요구 페이징 : 프로그램 실행 시 프로세스의 모든 페이지를 한 번에 메모리에 올리는 것이 아닌 당장 사용할 페이지만을 올리는 방식 → 특정 페이지에 대한 CPU의 요청이 들어온 후에야 해당 페이지를 메..
2022.08.07