본문 바로가기

CS/운영체제

(5)
[OS] 동기화 기법 뮤텍스 락, 세마포 동기화의 중요성: 레이스 컨디션과 임계 구역공유 자원이란?프로세스나 스레드가 공유하는 자원을 공유 자원(shared resource)이라고 합니다. 공유 자원은 메모리, 파일, 전역 변수, 입출력 장치 등 다양합니다.여러 프로세스나 스레드가 동시에 동일한 공유 자원에 접근할 경우, 예기치 않은 문제가 발생할 수 있습니다.  레이스 컨디션 문제다음은 두 개의 스레드가 count라는 공유 변수를 각각 100번씩 증가시키는 예제입니다.public class RaceConditionExample { static int count = 0; // 공유 변수 public static void main(String[] args) { Thread t1 = new Thread(new Counter(..
[OS] PCB, 문맥 교환(Context Switching) 운영체제와 프로세스 제어 블록(PCB)운영체제가 메모리에 적재된 여러 프로세스를 관리하기 위해서는 프로세스를 식별할 수 있는 커널 영역의 정보가 필요합니다. 이러한 정보를 프로세스 제어 블록(Process Control Block, PCB)이라고 부릅니다.PCB는 프로세스와 관련된 다양한 정보를 포함하는 구조체로, 새로운 프로세스가 메모리에 적재될 때 커널 영역에 만들어지며, 프로세스가 종료되면 제거됩니다.프로세스: 메모리에 적재된 실행 중인 프로그램.커널 영역: 운영체제의 핵심 부분을 담당하는 영역으로, 메모리에 적재된 부분을 커널 영역이라고 합니다.구조체: 서로 다른 자료형으로 이루어진 데이터를 하나로 묶어 사용할 수 있는 데이터 구조의 일종입니다. PCB에 담긴 정보PCB에는 프로세스를 관리하기 위..
[OS] 프로그램의 메모리 구조: 코드, 데이터, 힙, 스택, BSS 영역 컴퓨터가 실행되는 순간 메모리에는 다양한 프로세스들이 적재되어 실행됩니다.프로그램이 실행되어 메모리에 적재되었을 때, 이를 프로세스라고 부릅니다.하나의 프로세스를 구성하는 메모리 내의 정보는 크게 다르지 않습니다.커널 영역에는 프로세스 제어 블록(PCB)이라는 정보가 저장되고, 사용자 영역에는 실행 중인 프로세스가 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉘어 저장됩니다.코드 영역 (Code Segment)실행 가능한 명령어가 저장되는 공간입니다.텍스트 영역(text segment)이라고도 하며, CPU가 읽고 실행할 명령어가 저장되어 있어 쓰기(write)가 금지된 읽기 전용(read-only) 공간입니다.데이터 영역 (Data Segment)프로그램이 실행되는 동안 유지할 데이터가 저장되..
[OS] 시스템 콜, 이중 모드 운영체제도 일종의 프로그램이기 때문에 실행을 하기 위해서는 반드시 메모리에 적재되어야 합니다. 다만 사용자 프로그램과는 달리 운영체제는 매우 특별한 프로그램이므로 메모리 내의 커널 영역(kernel space)에 적재되어 실행됩니다.운영체제가 적재되는 커널 영역 이외에 사용자 응용 프로그램이 적재되는 공간을 사용자 영역(user space)라고 합니다.  여기서 주목해야 할 점은 응용 프로그램이 운영체제의 기능을 제공받기 위해서는 커널 영역에 적재된 운영체제 코드를 실행해야 한다는 것입니다.  일반적으로 웹 브라우저, 워드, 디스코드와 같은 응용 프로그램은 운영체제와는 달리 CPU, 메모리와 같은 자원을 직접적으로 조작할 수 없습니다. 특정 자원에 접근하거나 조작하기 위해서는 운영체제 코드를 실행해야 합..
[OS] 운영체제란? 운영체제란?운영체제(Operating System, OS)는 컴퓨터를 실행하고 관리하는 핵심 소프트웨어로, 사용자가 컴퓨터를 효율적으로 사용할 수 있도록 돕습니다. 우리가 일반적으로 사용하는 프로그램들은 모두 운영체제의 제어 아래에서 실행되며, 운영체제는 이들 프로그램이 원활하게 동작할 수 있도록 관리합니다. 대표적인 운영체제로는 데스크탑 환경에서 사용되는 윈도우, macOS, 리눅스가 있으며, 모바일 환경에서는 안드로이드와 iOS가 있습니다. 운영체제는 다양한 기능을 제공하지만, 모든 운영체제가 공통적으로 수행하는 핵심 기능이 존재합니다. 이 핵심 기능을 담당하는 부분이 바로 커널입니다.  커널: 운영체제의 핵심커널은 운영체제의 중심부로, 컴퓨터의 모든 주요 자원을 관리하고 제어하는 역할을 합니다. 커..