CS/OS 6

프로세스 (Process) vs 쓰레드 (Thread)

프로세스 vs 쓰레드프로세스 (Process) :실행 중인 프로그램의 인스턴스각 프로세스는 서로 독립된 메모리 공간을 사용프로세스 간 통신은 일반적으로 IPC 를 통해 이루어짐프로세스 생성과 종료가 상대적으로 비쌈문맥 전환 시 오버헤드가 큼한 프로세스가 비정상적으로 종료되더라도 다른 프로세스에 영향을 주지 않음쓰레드 (Thread) :프로세스 내에서 실행되는 더 작은 단위Code, Data, BSS, Heap 영역을 공유하며 Stack 영역은 독립적쓰레드 간 통신은 같은 프로세스 내에서 메모리 공유로 통신쓰레드 생성과 종료가 상대적으로 저렴문맥 전환 시 오버헤드가 작음동기화 문제와 경합 상태를 관리해야 함컨텍스트 스위칭 (Context Switching)컨텍스트 스위칭은 CPU 가 한 작업 (프로세스 또..

CS/OS 2024.10.10

메모리 (Memory)

메모리 (Memory)운영체제 (OS) 에서 메모리는 다음과 같이 분류할 수 있습니다.주기억장치 (Main Memory)RAM (Random Access Memory)ROM (Read-Only Memory)보조기억장치 (Secondary Memory)HDD (Hard Disk Drive)SSD (Solid State Drive)지금부터 설명하는 메모리는 RAM 을 지칭합니다.프로세스의 메모리 구조 (Memory Layout of a Process)메모리는 프로그램이 실행될 때 프로그램의 명령어와 데이터가 로드 (load) 되는 공간으로, CPU 가 직접 접근하여 해당 명령어와 데이터를 읽고 연산을 수행합니다. 다음은 프로세스가 메모리에 올라갔을 때의 메모리 할당 구조입니다.Text Segment실행할 프..

CS/OS 2024.10.05

표준 스트림 stdin, stdout, stderr

데이터 스트림 (Data Stream)데이터 스트림은 데이터가 연속적으로 흐르는 통로를 의미합니다. 프로그램이나 프로세스가 데이터를 읽거나 쓸 때, 데이터 스트림을 통해 데이터를 주고받습니다.표준 스트림 (Standard Streams)표준 스트림은 데이터 스트림 중에서 프로세스가 입출력 및 오류 처리를 위해 사용하는 기본 스트림입니다. 표준 스트림은 다음과 같이 세 가지로 구분됩니다.표준 입력 (Standard Input, stdin) :입력 데이터를 처리하는 스트림보통 파일 디스크립터 0번을 참조리다이렉션 (표준 출력 (Standard Output, stdout) :정상적인 출력을 처리하는 스트림보통 파일 디스크립터 1번을 참조리다이렉션 (>) 을 통해 표준 출력의 연결 대상 변경 가능표준 오류 (S..

CS/OS 2024.09.30

커널 (Kernel)

커널 (Kernel)커널은 운영체제의 핵심 구성 요소로, 메모리에 상주하며 시스템 자원 관리 및 하드웨어와 소프트웨어 간의 중재를 담당합니다.운영체제 (Operating System, OS) : 커널을 포함하여 사용자 인터페이스, 시스템 유틸리티 등을 포괄하는 개념으로, 컴퓨터 자원을 관리하고 사용자와 하드웨어 간의 인터페이스를 제공합니다.커널 시작부팅 과정에서, 컴퓨터가 처음 켜지면 하드웨어는 부트로더 (bootloader) 를 메모리에 로드합니다. 부트로더는 하드웨어의 초기화 작업을 수행한 후, 운영체제의 커널을 디스크에서 메모리로 로드합니다.커널은 메모리에 로드된 후 초기화 과정을 거치며 시스템의 하드웨어 자원들을 설정합니다. 이 과정에서 드라이버를 로드하고, 시스템 호출 인터페이스를 설정하며, 프..

CS/OS 2024.09.24

CLI 환경의 이해

CLI (Command-Line Interface)CLI 는 Command-Line Interface 의 줄임말로 사용자와 컴퓨터 시스템 간의 상호작용을 텍스트 명령을 통해 수행하는 방식을 말합니다. 명령어를 입력하면 명령어의 결과를 텍스트로 표시합니다.셸 (Shell)셸은 사용자가 입력한 명령어를 해석하고 실행하는 프로그램으로 CLI 의 인터프리터 역할을 합니다. 명령어를 파싱하고, 필요한 작업을 수행하며, 결과를 터미널에 전달합니다.일반적인 셸 (ex. bash, sh, zsh) 과 Python 셸은 약간의 차이점이 존재합니다. 일반적인 셸은 운영 체제 명령어를 해석하고 실행하는 인터프리터인 반면 Python 셸은 Python 코드를 해석하고 실행하는 인터프리터입니다.엄밀히 말하면 셸은 해당 인터프리..

CS/OS 2024.09.16