OperatingSystem
9 posts
Glossary
OperatingSystem
May 21, 2024
인터럽트(Interrupt) vs 트랩(Trap)

인터럽트 vs 트랩 💡학습 자료에서 인터럽트와 트랩이 혼용되어 사용되는데, 정확한 차이를 알 수 없어 정리하기 위해 포스팅을 작성한다. 인터럽트와 트랩 정의: 인터럽트는 즉각적인 주의를 요하는 이벤트를 알리는 신호로, 하드웨어 또는 소프트웨어에 의해 발생한다. 정의를 봐도 역시나 헷갈리는데, 그 이유는 트랩이 인터럽트의 일종이기 때문인 듯 하다. 인터럽트는 다시 와 로 분류되는데, 소위 그냥 말하는 는 로, 외부 장치에 의한 인터럽트에 한정되는 듯 하다. javatpoint.com에서는 트랩에 대해 다음과 같이 설명한다. A trap is a software-produced interrupt that can be caused by various factors, including an error in instruction, such as division by zero or illegal memory access. A trap may also be generated when a use…

OperatingSystem
TABA
July 05, 2023
07.05(수)-3 Virtual Memory

❗️날짜별로 정리하여 복습하기를 원하기 때문에 내용이 길고 다소 정리되지 않았습니다. Virtual Memory 드라이브의 일부를 물리 메모리의 일부처럼 활용하는 기법 Swapping 실제 물리 메모리가 가득 찼을때 프로세스를 swap-in & swap-out 을 통해 드라이브의 일부를 가상 메모리로 활용 프로세스 상태 전이도(expand) 대기 → 보류대기 : swap out 보류 대기 → 보류 준비 : wake 보류 준비 → 준비 : swap in 페이지 교체 알고리즘 First-In-First-Out (FIFO) 가장 오래된 페이지를 swap out 하고 새로운 페이지를 swap in 하는 알고리즘 Optimal Algorithm 앞으로 가장 오래 쓰이지 않을 페이지를 교체하는 알고리즘 미래 예측이기 때문에 현실적으로 제약사항이 많음 그래서 이후 알고리즘이 등장함 Least Recently Used (LRU) 가장 오랫동안 사용하지 않은 페이지를 swap out 하고…

OperatingSystem
TABA
July 05, 2023
07.05(수)-2 Main Memory

❗️날짜별로 정리하여 복습하기를 원하기 때문에 내용이 길고 다소 정리되지 않았습니다. Main Memory Address Binding 절대주소는 프로그램의 실행에 필요한 데이터와 명령어가 메인 메모리에서 실제로 위치하는 고정된 주소→absolute program(프로그램을 작성할때 주소를 결정) 상대주소는 프로그램 내에서 상대적인 위치를 나타내며, 실행 시에 절대 주소로 변환(런타임에 결정) 상대주소를 절대주소로 변환하는 과정을 Address Binding 이라고 한다. 개발시에 주소를 결정하는 방법, 컴파일시에 결정하는 방법 등이 있지만 런타임에 결정하는 방법이 대표적이다. Address 변환 3단계 Symbolic address : 프로그래머들이 특정 이름을 통해 변수를 지정하고 값을 저장, 변수의 이름 자체를 Symbolic address라고 함. Relocatable address(=Logical address) : 주소를 프로그램이 실행될 때마다 재배치할 수 있는 상대…

OperatingSystem
TABA
July 05, 2023
07.05(수)-1 Synchronization, Deadlock

❗️날짜별로 정리하여 복습하기를 원하기 때문에 내용이 길고 다소 정리되지 않았습니다. Synchronization Tools Background 협력적인 프로세스는 다른 프로세스에 영향을 주거나 받을 수 있다. 프로세스간 공유 데이터 영역은 데이터 불일치의 가능성이 있다. 협력적인 프로세스에서는 데이터의 일치성을 유지시키는 것이 필요. Race Condition 여러개의 프로세스가 동시에 에 접근하는 것 공유된 데이터의 최종값은 마지막으로 완료된 프로세스에 의존 Race Condition을 예방하기 위해 동시적인 프로세스는 동기성을 유지해야 함. Example of a Race Condition 💡 Counter++ is not atomic if… a→b→c→1→2→3 : 5 a→1→b→2→c→3 : 4 a→1→b→2→3→c : 6 결과에 일관성이 없음 암달의 법칙의 한가지 원인 임계 영역(Critical Section) 여러 프로세스 또는 스레드가 공유 자원에 접근하는 코드 영역…

OperatingSystem
TABA
July 04, 2023
07.04(화)-3 CPU Scheduling

❗️날짜별로 정리하여 복습하기를 원하기 때문에 내용이 길고 다소 정리되지 않았습니다. CPU Scheduling Basic Concept 멀티프로그래밍을 통해 최대 CPU 활용률을 얻기 위함 CPU – I/O 버스트 주기 – 프로세스 실행은 CPU 실행 주기와 I/O 대기 주기로 구성됨 → → 분포가 기본 CPU Scheduler CPU Scheduler는 준비 큐에서 어떤 프로세스를 선택해서 Processor에 할당할지 결정한다. 준비 큐는 다양한 방법으로 순서를 정할 수 있다. CPU Scheduling은 process를 어떤 상태로 만들지 결정한다. Switches from running to waiting state(e.g., I/O request) Switches from running to ready state(e.g., timer out) Switches from waiting to ready state(e.g, I/O finished interrupt) Ter…

OperatingSystem
TABA
July 04, 2023
07.04(화)-2 Thread

❗️날짜별로 정리하여 복습하기를 원하기 때문에 내용이 길고 다소 정리되지 않았습니다. Thread & Concurrency Thread Overview ❗ 쓰레드는 코드, 데이터, 힙 영역을 공유하고 스택영역만을 따로 할당한다. 스택을 독립적으로 할당하는 이유 스택은 함수 호출 시 전달되는 인자, 되돌아갈 주소값 및 함수 내에서 선언하는 변수 등을 저장하기 위해 사용되는 메모리 공간이다. 따라서 스택 메모리 공간이 독립적이라는 것은 독립적인 함수 호출이 가능하다는 것이고, 이는 독립적인 실행 흐름이 추가되는 것이다. 결과적으로 실행 흐름의 추가를 위한 최소 조건이 독립된 스택을 제공하는 것이다. 코드 영역을 공유 프로세스는 독립적인 구조이기 때문에 다른 프로세스의 Code영역에 있는 함수를 호출할 수 없다.쓰레드는 Code영역을 공유하기 때문에 두 개 이상의 쓰레드가 자신이 포함된 프로세스의 Code영역에 있는 함수를 호출할 수 있다. 데이터 영역과 힙 영역을 공유 전역 변수와 동…

OperatingSystem
TABA
July 04, 2023
07.04(화)-1 Process

❗️날짜별로 정리하여 복습하기를 원하기 때문에 내용이 길고 다소 정리되지 않았습니다. Process Concept Process Code 영역 실행할 프로그램의 코드가 저장됩니다. CPU는 이 영역에서 명령어를 하나씩 가져와 처리하게 됩니다. Data 영역 전역변수와 정적변수가 저장됩니다. 이 변수들은 프로그램이 시작될 때 할당되어 프로그램 종료 시 소멸됩니다. +) 더 자세히 들어가면 BSS(Block Stated Symbol) 영역이 있는데요, 이 영역에는 초기화 되지 않은 전역변수가 저장됩니다. 초기화 된 전역변수는 Data 영역에 저장되어 비휘발성 메모리인 ROM에 저장되는데 이 부분은 비용이 많이 들어 RAM에 저장될 것과 ROM에 저장될 것을 구분하기 위해 영역을 구분해 사용합니다. Stack 영역 지연변수, 매개변수, 리턴값 등 잠시 사용되었다가 사라지는 데이터를 저장하는 영역입니다. 함수 호출 시 할당되고 함수 반환 시 소멸됩니다. 로드 시(컴파일 타임) 크기가 결정…

OperatingSystem
TABA
July 03, 2023
07.03(월)-2 Computer architecture, Virtualization, Linux, etc

❗️날짜별로 정리하여 복습하기를 원하기 때문에 내용이 길고 다소 정리되지 않았습니다. 컴퓨터 아키텍처 폰 노이만 구조 프로세스 구조 Code 영역 가 저장됩니다. CPU는 이 영역에서 명령어를 하나씩 가져와 처리하게 됩니다. Data 영역 가 저장됩니다. 이 변수들은 프로그램이 시작될 때 할당되어 프로그램 종료 시 소멸됩니다. +) 더 자세히 들어가면 BSS(Block Stated Symbol) 영역이 있는데요, 이 영역에는 초기화 되지 않은 전역변수가 저장됩니다. 초기화 된 전역변수는 Data 영역에 저장되어 비휘발성 메모리인 ROM에 저장되는데 이 부분은 비용이 많이 들어 RAM에 저장될 것과 ROM에 저장될 것을 구분하기 위해 영역을 구분해 사용합니다. Stack 영역 지연변수, 매개변수, 리턴값 등 를 저장하는 영역입니다. 함수 호출 시 할당되고 함수 반환 시 소멸됩니다. 로드 시(컴파일 타임) 크기가 결정됩니다. 위 세 영역은 컴파일 할 때 data, stack 영역의 …

OperatingSystem
TABA
July 03, 2023
07.03(월)-1 Introduction, I/O, etc

❗️날짜별로 정리하여 복습하기를 원하기 때문에 내용이 길고 다소 정리되지 않았습니다. Introduction Structure 💡 OS : User단과 HW단 사이에서 동작하는 프로그램 Performance metrics(OS 평가 기준) Throughput : jobs / sec. - system oriented Utilization : % of time busy - system oriented Response time : sec / job - user oriented 4 Components Hardware Operating system Application programs Users OS’s role Resource allocator CPU, 메모리 저장공간, 파일 저장 공간, 입출력장치 등의 자원을 관리 자원 요구에 대한 충돌적 요구를 효과적/공정하게 분배 Control program 에러 예방 등 💡 커널 : OS에서 항상 실행되는 부분 System program vs. A…