Computer Science/Operating System
[Operating System] Semaphore
[Operating System] Semaphore
2025.04.08한 프로세스가 임계 구역에 접근할 때 CPU Interrupt를 비활성화하면 현재 실행 중인 코드가 중단되지 않아 Critical Section을 보호할 수 있다. 원래는 CPU는 명령어를 실행하고 Interrupt가 발생했는지 매번 확인하는데, Atomic Operation을 실행할 때는 Interrupt를 비활성화한다.이 때 Interrupt를 아예 무시하는건 아니고, Atomic Operation이 마무리 된 후에 그 동안 발생한 Interrpt를 수행하는 방식으로 동작해 처리를 뒤로 미룬다고 생각하자. 시스템 성능 저하 문제 때문..사용자 코드를 Atomic Operation으로 실행하는건 좋지 않지만, Entry Section을 Atomic Operation으로 다루는건 합리적이다. 운영체제는..
[Operating System] 프로세스와 동시성 제어
[Operating System] 프로세스와 동시성 제어
2025.03.28멀티쓰레드와 멀티프로세싱 환경에서는 여러 요소들이 동시에 실행되고, 운영체제는 동시성 관련 문제를 해결해 줘야 한다. Race Condition - 두 요소가 동시에 공유 데이터를 조작할 때 실행 순서에 따라 결과가 달라지는 현상을 말한다.Mutual Exclusion - 한 순간에 하나의 요소만 공유 자원에 접근할 수 있도록 보장해 Race Condition을 방지한다.Critical Section - 여러 요소가 동시에 접근하면 안 되는 공유 자원에 접근하는 코드 블록 자체를 의미한다.Starvation - 프로세스가 자원을 기다리지만 다른 프로세스가 자원을 반환하지 않아 무한히 기다리는 상황을 말한다.Deadlock - 여러 프로세스가 서로 자원을 점유해 상대방이 작업을 마칠 때 까지 기다리며 무한..
[Operating System] Process Termination / Thread
[Operating System] Process Termination / Thread
2025.03.19CPU 에러, signal, 부모 프로세스 관련 문제 등으로 프로세스가 동작을 마치면 exit System Call을 호출해 terminated 상태로 변한다.이 때 release는 프로세스가 실행될 때 사용했던 컴퓨팅 리소스를 반환함을 의미한다.terminated 상태인 프로세스는 아직 제거된 상태는 아니고, wait System Call이 호출될 때 제거된다. 사용량 및 통계 정보를 저장하는 PCB만 남아있는 상태이다. exit System Call을 호출하면 해당 프로세스는 User Mode에서 Kernel Mode로 변하게 된다.이 때 PCB를 제외한 test.c의 모든 컴퓨팅 자원을 회수하는데, 이 PCB를 통해 해당 프로세스가 terminated 상태임을 확인한다. PCB의 State ..
[Operating System] Process (Context, Creation, Switch)
[Operating System] Process (Context, Creation, Switch)
2025.03.17Process Context는 프로세스가 실행될 때 필요한 컴퓨터 내 리소스의 집합을 의미한다. User Context운영체제가 직접 만들지 않고, 개발자가 작성한 프로그램이 만들어낸다. 실행 중인 프로그램의 명령어 (Code Segment)전역 변수, 정적 변수 등 프로그램이 끝날 때 까지 유지되는 데이터 (Global Data)함수 내부에 선언된 지역 변수들이 저장되는 LIFO 구조 공간 (User Stack) System Context운영체제가 직접 관리한다. Kernel Stack - 커널 모드에서 실행될 때 함수 호출과 시스템 콜을 처리하기 위한 스택으로, 프로세스마다 독립적이다.Process Control Block - 프로세스의 중요한 정보를 저장하는 자료구조로 프로세스의 상태, pid, 메..
[Operating System] 커널 구조와 프로세스
[Operating System] 커널 구조와 프로세스
2025.03.12운영체제의 코어 기능을 모아둔 커널을 구현할 때, 구현하는 방식에 따라 Monolithic Kernel과 Micro Kernel로 구분된다. 사용자 공간 - 응용 프로그램에서 실행되는 영역커널 공간 - 운영체제의 핵심 기능이 실행되는 영역 MonolithicKernel운영체제의 모든 핵심 기능이 하나의 커널 공간에서 실행되는 방식으로, Unix와 Linux는 Monolithic Kernel로 구성되어있다.마이크로 커널보다 실행 속도가 빠르지만 작은 에러가 전체 시스템에 전파될 수 있고 커널의 크기가 크다. MicroKernel운영체제의 핵심 기능을 최소화하고 나머지 기능을 사용자 공간에서 가져오는 커널 구조로, IoT 장치 등 작은 운영체제가 필요한 기기에서 사용된다.개발할 때 전체 커널을 다시 컴..
[Operating System] 운영체제 개요
[Operating System] 운영체제 개요
2025.03.10소프트웨어는 프로그램을 포함하는 더 넓은 개념으로, 프로그램은 시작점이 되는 EntryPoint가 있어 혼자서도 실행될 수 있지만, 소프트웨어는 시작점이 없을 수 있다. 운영체제는 소프트웨어로 단순한 프로그램이 아니라 여러 프로그램, 드라이버, 라이브러리 등 다양한 구성 요소를 포함하는 소프트웨어의 집합이다. 운영체제는 하드웨어와 소프트웨어 사이에 위치해 사용자와 컴퓨터 간 인터페이스를 제공하는 시스템 소프트웨어이다. 운영체제는 컴퓨터의 리소스에 접근하고 관리해 사용자에게 여러 편리한 추상화를 제공한다. 저장소에 파일이 어떤 구조로 저장되어있고, 어떤 위치에 저장되어있는지 사용자가 알지 못해도 운영체제가 알아서 처리해주고, CPU 메모리 등 리소스의 사용량을 지속적으로 모니터링해 기록한다. Proc..
[Ubuntu] 셸 스크립트 프로그래밍
[Ubuntu] 셸 스크립트 프로그래밍
2023.09.11리눅스에서 Shell은 사용자와 운영체제간의 상호작용을 중개하는 인터페이스로 사용자의 명령을 해석하고 명령에 따라 시스템을 제어한다. 우분투에서는 bash 라는 셸을 사용한다. 셸 스크립트 프로그래밍은 C언어와 유사한 점이 많다. 변수 / 반복문 / 제어문 등을 사용할 수 있고, 컴파일 하지 않고 바로 텍스트 파일 형태로 실행할 수 있다. 셸 스크립트에서 변수는 사용 전 미리 선언할 필요가 없고, 값을 할당함과 동시에 변수가 생성된다. 모든 변수는 문자열로 취급되며 대입 시 좌우 공백이 없어야 한다. 셸은 여러 환경 변수 값을 가지는데, echo $환경변수명 명령어로 특정 환경변수에 접근할 수 있다. 나머지 반복문, 변수 사용, 제어문 등은 일반 프로그래밍 언어와 비슷하니 필요할 때 찾아서 사용하자. 셸..