Computer Science
[Operating System] Deadlock and Starvation
[Operating System] Deadlock and Starvation
2025.04.13데드락은 두 개 이상의 프로세스가 절대 발생할 수 없는 이벤트를 무한정 기다리는 상황을 의미한다. 프로세스 P는 A자원을 가지고 있고, B자원을 운영체제에게 요청했다.프로세스 Q는 B자원을 가지고 있고, A자원을 운영체제에게 요청하는데... 운영체제는 현재 B자원이 사용할 수 없는 상태이기에 프로세스 A를 Block상태로 변경시키고, 프로세스 B도 같은 이유로 Block상태로 변경시킨다. x축은 프로세스 P가 실행하는 시간을, y축은 프로세스 Q가 실행하는 시간을 의미한다.나머지 루트로 진행하는 경우 아무 문제가 발생하지 않는데.. 3번, 4번 루트로 실행되는 경우 데드락이 발생한다. 한 사람이 P와 Q 프로그램을 작성한다면 데드락이 발생하지 않는 방식으로 작성하겠지만.. P를 작성하는 사람..
[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으로 다루는건 합리적이다. 운영체제는..
[UPL] Syntax & Parsing
[UPL] Syntax & Parsing
2025.04.04프로그래밍 언어는 문자열의 집합이고, 프로그래밍 언어로 작성된 프로그램은 문자열이라고 생각할 수 있다.그렇다고 아무 문자열이나 프로그래밍 언어가 될 수 있는 건 아니다. 특정 문법에 부합해야 프로그래밍 언어가 될 수 있다. 문자열 s가 프로그래밍 언어인지 판단하는 함수 L(G) 를 생각해보자.s가 L(G)의 집합에 포함된다면 s는 프로그래밍 언어라고 할 수 있다. 위의 Chomsky Hierarchy는 언어의 표현력을 나타낸다.사실상 튜링 머신은 존재하지 않고 Regular Language는 프로그래밍 언어를 정의할 때 표현력이 부족해 독립적으로 사용되지 않으니 프로그래밍 언어의 정의는 두 가지로 구분된다. 오토마타는 문자열 s가 L(G) 집합에 포함되는지를 판단한다. Lemail 언어를 집합으로..
[Data Communication] 물리 계층에서의 데이터 전송
[Data Communication] 물리 계층에서의 데이터 전송
2025.04.02디지털 통신은 컴퓨터가 이해할 수 있는 비트를 주고받는 일인데.. 소리나 영상 같은 아날로그 데이터를 전송하려면 데이터를 비트로 변환해야 한다. 이 과정에서 물리 계층이 개입되고, 이 계층은 전기 신호 / 소리 / 빛 등 아날로그 신호를 비트로 표현하는 역할을 수행한다. PCM (Pulse Code Modulation)아날로그 소리를 디지털로 변환하는 디지털 오디오의 표준으로, 샘플링 / 양자화 / 인코딩을 수행한다.소리는 시간에 따라 연속적으로 변하니 연속 신호라고 할 수 있는데, ADC는 소리를 디지털로 변환하는 장치이며, PCM은 그 장치 중 하나라고 생각하면 된다. 샘플링 - 아날로그 신호를 일정 간격으로 끊어서 값을 측정. (1초에 8000번 측정 = 8kHz)양자화 - 샘플링으로 얻은 아날로..
[Data Communication] Layer Packet Signal
[Data Communication] Layer Packet Signal
2025.04.01브라우저를 통해 https://www.naver.com/ 으로 접속할 때 무슨 일이 발생할까? 먼저 운영체제가 로컬 DNS 캐시를 확인하고 히트된 경우 해당 IP주소를 바로 사용한다.히트되지 않은 경우 DNS 서버에 질의를 보내는데, 이 때 무선 랜카드와 무선 공유기를 사용한다. (유선의 경우 이더넷 케이블) 무선 공유기(AP)는 와이파이 신호를 받아 이더넷 패킷으로 변환하고 인터넷 라우터로 전달한다.공유기는 NAT로 내부 IP를 공인 IP로 변환해준다.집 인터넷 라우터는 공유기로부터 받은 요청을 ISP 네트워크로 전달한다. 요청 데이터는 광케이블을 통해 ISP 네트워크로 전송되고, ISP 네트워크에서 라우터가 패킷을 분석하고 인터넷으로 보내는데, 이 때 스위치는 패킷을 빠르게 전송하기 위해 적절..
[Operating System] 프로세스와 동시성 제어
[Operating System] 프로세스와 동시성 제어
2025.03.28멀티쓰레드와 멀티프로세싱 환경에서는 여러 요소들이 동시에 실행되고, 운영체제는 동시성 관련 문제를 해결해 줘야 한다. Race Condition - 두 요소가 동시에 공유 데이터를 조작할 때 실행 순서에 따라 결과가 달라지는 현상을 말한다.Mutual Exclusion - 한 순간에 하나의 요소만 공유 자원에 접근할 수 있도록 보장해 Race Condition을 방지한다.Critical Section - 여러 요소가 동시에 접근하면 안 되는 공유 자원에 접근하는 코드 블록 자체를 의미한다.Starvation - 프로세스가 자원을 기다리지만 다른 프로세스가 자원을 반환하지 않아 무한히 기다리는 상황을 말한다.Deadlock - 여러 프로세스가 서로 자원을 점유해 상대방이 작업을 마칠 때 까지 기다리며 무한..
[UPL] 함수형 언어 OCaml
[UPL] 함수형 언어 OCaml
2025.03.21Objective Caml. Caml 언어는 ML family에 속하는 프로그래밍 언어로, 안전한 소프트웨어 개발과 교육 용도로 활용된다. Functional Programming Language - 함수를 일급 객체로 사용해 변수처럼 다룰 수 있다.Strongly Typed Language - 자바처럼 컴파일 시점에 모든 변수와 표현식의 타입이 결정된다.Pattern Matching - Case 구문의 상위 호환으로, 값의 구조에 따라 조건부 분기를 간결하게 구현할 수 있다.Type Inference - 타입 시스템이 변수와 표현식의 타입을 추론해 코드의 가독성을 높인다.Polymorphism - 함수와 데이터 타입이 여러 다른 타입에서도 재사용 할 수 있다. 명시적인 main 함수가 없고, 소스코드를..
[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..
[Nginx] nginx.conf
[Nginx] nginx.conf
2023.12.28user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; keepalive_timeout 65; gzip on; server { listen 80; server_name 127.0.0.1; client_max_body_size 2M; location / { root /usr/share/nginx/html; i..