반응형

개발공부/CS 35

[운영체제] PC Register를 스레드마다 독립적 할당하는 이유는?

PC (Program Counter) Register를 스레드마다 독립적으로 할당하는 이유는 각 스레드가 독립적인 실행 흐름을 가지기 위해서입니다. **프로그램 카운터(PC)**는 현재 실행 중인 명령어의 메모리 주소를 가리키는 레지스터로, 각 스레드가 어디서 실행을 중단했는지, 또는 어느 명령어에서 실행을 계속해야 하는지를 관리합니다.따라서 각 스레드마다 독립적인 PC 레지스터를 할당해야 하는 이유는 다음과 같습니다:1. 스레드마다 독립적인 실행 흐름 보장각 스레드는 독립적인 실행 흐름을 가집니다. 즉, 각 스레드는 자신만의 명령어 순서를 따라 실행됩니다.PC 레지스터는 현재 실행 중인 명령어의 주소를 저장하고 있기 때문에, 각 스레드는 자신의 실행 흐름에 맞는 고유한 프로그램 카운터를 가져야 합니다...

개발공부/CS 2025.02.16

[운영체제] 스택을 스레드마다 독립적으로 할당하는 이유?

스택을 스레드마다 독립적으로 할당하는 이유는 각 스레드가 독립적으로 실행되고 자신만의 호출 스택을 사용해야 하기 때문입니다.이를 통해 스레드들이 다른 스레드의 실행 상태와 충돌 없이 독립적으로 작업을 수행할 수 있습니다.구체적인 이유는 다음과 같습니다:1. 독립적인 실행 흐름각 스레드는 자신만의 실행 흐름을 가집니다. 즉, 각 스레드는 자신이 호출한 함수나 메서드의 반환 주소, 지역 변수 등 고유한 실행 상태를 유지해야 합니다.스택은 함수 호출 시마다 해당 함수의 지역 변수, 반환 주소 등을 저장하는데, 만약 여러 스레드가 동일한 스택을 공유하면, 스레드 간에 데이터가 충돌하거나 덮어쓰여 문제가 발생할 수 있습니다.따라서, 각 스레드는 자신만의 스택을 가져야만 독립적인 실행 흐름을 유지할 수 있습니다.2..

개발공부/CS 2025.02.16

[운영체제] pcb에 저장되는 정보는?

**PCB (Process Control Block)**에는 운영 체제가 각 프로세스를 관리하기 위해 필요한 다양한 정보가 저장됩니다.이 정보들은 주로 프로세스 상태, 실행 정보, 메모리 관리 정보 등을 포함하여, 프로세스가 제대로 실행되고, 컨텍스트 스위칭 시 필요한 정보를 복원할 수 있게 합니다. PCB에 저장되는 주요 정보는 다음과 같습니다:1. 프로세스 식별 정보프로세스 ID (PID): 프로세스를 고유하게 식별하는 번호입니다. 이 ID는 운영 체제가 프로세스를 추적하는 데 사용됩니다.부모 프로세스 ID (PPID): 프로세스를 생성한 부모 프로세스의 ID입니다. 이는 프로세스 간의 계층적 관계를 파악하는 데 사용됩니다.프로세스 그룹 ID: 동일한 그룹에 속하는 프로세스들을 묶어서 관리하는데 사용..

개발공부/CS 2025.02.16

[운영체제] 프로세스 제어 블록 (Process Control Block, PCB)

**프로세스 제어 블록 (Process Control Block, PCB)**은 운영 체제에서 각 프로세스를 관리하는 데 필요한 중요한 정보를 저장하는 데이터 구조입니다.PCB는 각 프로세스에 대한 상태, 제어 정보, 메모리 정보 등을 포함하고 있어,운영 체제가 프로세스를 효율적으로 관리하고, 컨텍스트 스위칭(context switching) 시 해당 프로세스의 상태를 복원할 수 있도록 합니다.1. PCB의 주요 구성 요소PCB는 프로세스의 실행과 관련된 다양한 정보를 포함하고 있으며, 보통 다음과 같은 필드들로 구성됩니다:프로세스 ID (Process ID, PID):각 프로세스를 고유하게 식별하는 번호입니다. 운영 체제는 이 PID를 사용하여 프로세스를 추적하고 관리합니다.프로세스 상태 (Proces..

개발공부/CS 2025.02.16

[운영체제] LRU (Least Recently Used)

**LRU (Least Recently Used)**는 캐시 교체 알고리즘 중 하나로, 가장 오랫동안 사용되지 않은 데이터를 우선적으로 제거하는 방식입니다. 이 알고리즘은 메모리나 캐시에서 데이터를 효율적으로 관리하기 위해 사용됩니다. 데이터가 캐시 또는 메모리에 일정 시간 동안 저장된 후, 다시 참조되지 않으면 그 데이터를 제거하고, 새로운 데이터를 저장하는 방식입니다.1. LRU의 기본 원리LRU 알고리즘의 기본 아이디어는 최근에 사용된 데이터를 우선적으로 유지하고, 가장 오랫동안 사용되지 않은 데이터를 제거하는 것입니다. 즉, 가장 오래된 데이터를 먼저 교체하는 방식입니다.2. LRU 동작 방식LRU는 데이터를 사용한 순서를 추적하여, 가장 오랫동안 사용되지 않은 데이터를 교체합니다. 이 알고리즘은..

개발공부/CS 2025.02.16

[운영체제] 메모리구조

메모리 구조는 컴퓨터 시스템에서 데이터를 저장하고 관리하는 방식을 의미합니다.메모리는 여러 레벨로 나뉘며, 각 레벨은 속도, 용량, 접근 방식 등이 다릅니다.주로 주기억장치(RAM)와 보조기억장치(하드디스크, SSD 등)로 구분되며,이들을 효과적으로 관리하기 위한 다양한 계층적 구조를 가지고 있습니다.1. 메모리 계층 구조컴퓨터 시스템에서 메모리는 여러 계층을 이루어 효율적인 데이터 접근과 관리가 이루어집니다. 일반적으로 사용되는 메모리 계층은 다음과 같습니다:레지스터 (Registers):CPU 내부에 위치한 가장 빠른 메모리입니다. CPU가 직접 접근하여 데이터를 처리하는 데 사용되며, 수십 개의 레지스터가 존재합니다.레지스터는 CPU의 명령어와 데이터를 처리하는 데 필요한 최소한의 데이터를 저장합니..

개발공부/CS 2025.02.16

[운영체제] 데드락이란?

**데드락(Deadlock)**은 두 개 이상의 프로세스나 스레드가 서로 자원을 기다리며 무한정 대기 상태에 빠지는 현상을 말합니다.데드락이 발생하면 각 프로세스가 필요한 자원을 얻을 수 없어 실행이 중단되며,이로 인해 시스템 전체가 멈추게 되는 상황이 발생할 수 있습니다.1. 데드락 발생 조건 (4대 필수 조건)데드락이 발생하기 위한 조건은 다음 네 가지가 동시에 충족되어야 합니다:상호 배제(Mutual Exclusion):자원은 한 번에 한 프로세스만 사용할 수 있어야 한다는 조건입니다. 즉, 자원이 배타적으로 할당되어 있어, 동시에 여러 프로세스가 하나의 자원을 사용할 수 없습니다.점유와 대기(Hold and Wait):프로세스가 자원을 점유한 상태에서 다른 자원을 기다리는 조건입니다. 즉, 프로세..

개발공부/CS 2025.02.16

[운영체제] 컨텍스트 스위칭이란?

**컨텍스트 스위칭(Context Switching)**은 운영 체제가CPU의 실행을 하나의 프로세스나 스레드에서 다른 프로세스나 스레드로 전환하는 과정입니다.이 전환 과정은 CPU가 동일한 프로세서에서 여러 작업을 처리하는 멀티태스킹 환경에서 발생합니다.1. 컨텍스트 스위칭의 필요성멀티태스킹: 여러 프로세스나 스레드가 동시에 실행되고 있다고 가정할 때, 운영 체제는 각 프로세스나 스레드에게 CPU를 분배하고, 이를 빠르게 전환하여 마치 모든 작업이 동시에 실행되는 것처럼 보이게 합니다.CPU 자원 공유: 여러 프로세스가 CPU 자원을 공평하게 사용할 수 있도록, 운영 체제는 각 프로세스의 실행을 주기적으로 전환하여 CPU 시간을 나눕니다. 이 과정에서 발생하는 것이 바로 컨텍스트 스위칭입니다.2. 컨텍..

개발공부/CS 2025.02.16

[운영체제] 스레드란?

**스레드(Thread)**는 프로세스 내에서 실행되는 가장 작은 실행 단위입니다. 스레드는 프로세스의 자원을 공유하며, 독립적으로 실행되는 코드의 흐름을 나타냅니다. 하나의 프로세스는 여러 스레드를 가질 수 있으며, 각 스레드는 독립적인 실행 흐름을 가집니다. 여러 스레드가 동시에 실행되는 방식을 **멀티스레딩(Multi-threading)**이라고 합니다.1. 스레드의 기본 개념프로세스와 스레드의 관계:프로세스는 자원을 독립적으로 가진 실행 단위로, 각 프로세스는 자신만의 메모리 공간, 코드, 데이터 등을 가집니다.스레드는 하나의 프로세스 내에서 실행되는 코드의 흐름으로, 같은 프로세스 내의 다른 스레드들과 메모리와 자원을 공유합니다.스레드 간의 자원 공유는 메모리 공간, 파일 디스크립터, I/O 자..

개발공부/CS 2025.02.16

[운영체제] 프로세스란?

**프로세스(Process)**는 실행 중인 프로그램을 의미합니다. 프로그램은 디스크에 저장된 코드인 반면, 프로세스는 실행을 위해 메모리에서 로드되고 실행되는 동적인 상태를 가집니다. 프로세스는 운영 체제에서 자원을 할당받아 실행되고, 프로그램 코드, 데이터, 시스템 자원 등을 포함한 여러 요소들로 구성됩니다.1. 프로세스의 구성 요소프로그램 코드: 실행 중인 코드 자체로, 명령어들이 포함됩니다.프로세스 상태: 프로세스가 현재 어떤 상태에 있는지 (실행 중, 대기 중, 종료 등).레지스터(Register): CPU 내부의 레지스터 값을 포함하여, 현재 실행 상태를 나타내는 값들이 저장됩니다.프로그램 카운터(Program Counter): 현재 실행 중인 명령어의 메모리 주소를 나타냅니다.힙(Heap):..

개발공부/CS 2025.02.16
728x90