2024/10 13

[Operating System/운영체제][Memory관리,Virtual memory, Paging]

Virtual memory는 Base and Limit Register를 사용할 때 발생하는 문제는 Program이 Main memory보다 크게 된다면프로그램을 돌릴 수 없다는 문제가 발생하게 됩니다.  이는 Base and Limit Register를 돌리려면 전체가 다 올라와야 한다는 것 때문입니다.그래서 이 문제를 해결해주기 위해서 Overlay방법과 Paging방법이 있습니다.  Overlay방법은 OS가 하는게 아니라 프로그래밍을 할 때, 프로그램을 로딩할 때 A만 로딩을하고 난 이후에 A프로그램이전부 실행되고 나면 프로그램 B가 프로그램 A의 영역을 적재하는 방식으로 프로그래밍을 해줘야 합니다.  쉽게 말해서, 프로그램P가 있을 때 P의 Overlay section(A, B, C)으로 나뉘어..

[Operating System/운영체제][memory관리, Bit Map, Linked List, Fragmentation]

지난 포스팅에 이어서 그 이후의 내용을 정리하려고 했지만, 우선 memory chapter에 대해서 다루도록 하고주말에 따로 정리해서 올리도록 하겠습니다. memory chapter는 제 '컴퓨터 구조' 카테고리를 확인해보면 간략하게 정리된 부분을 확인해볼 수 있습니다.     Mono programming이란 운영체제에서 사용하는 메모리 관리 방식 중 하나로, 한 번에 하나의 프로그램만 메모리에 적재되어실행되는 방식입니다. 메모리에 동시에 오직 하나의 프로그램만 올라와서 실행될 수 있으며다른 프로그램들은 해당 프로그램이 끝날 때까지 대기해야 합니다.  당연히 단점으로 만약에 프로그램이 작은 상태라면 메모리의 일부만 사용하게 되므로 메모리 사용 효율이 낮아지고,다른 프로그램들은 현재 실행중인 프로그램이 ..

[컴퓨터구조][virtual memory]

지난 시간에 이어서 virtual memory에 대해서 알아보도록 하겠습니다.    그렇다면 굳이 virtual memory에 사용되는 복잡한 개념을 이용해 가면서 사용하는 것 일까요? virtual memory는 물리 메모리의 한계를 극복하고 효율적인 메모리 관리를 위해서 사용됩니다. 물리 메모리는 제한된 자원으로 크기가 정해져 있습니다. 하지만 저희가 게임을 하더라도 많은 용량을 필요하게 됨으로물리 메모리의 제한된 자원을 다 사용하더라도 부족할 수 있습니다. 이처럼 프로그램을 사용할 때 부족한 메모리의 제한을 없애고 큰 프로그램을 사용하기 위해서 virtual memory를 사용합니다. 또한 여러가지 이유가 있지만 그 중에서 메모리 단편화를 해결하기도 합니다.물리 메모리에 연속적으로 공간을 할당하다보..

[컴퓨터구조][cache#2]

이전 시간에는 cache의 대략적인 구조인 Direct mapped cache와 n-way set associative에 대해서 배웠었습니다. 간략하게 살펴봤기 때문에 자세한 부분을 더 다뤄야 겠다는 생각으로 다시 글을 작성해보려고 합니다. 이전의 포스팅을 보고 전체적인 부분을 둘러보시고 이 포스팅을 보시면 이해하기가 쉬우실 거라고 생각합니다.     cache에는 Direct mapped / n-way set associative / fully associative cache가 있습니다.   이전 시간에 이야기 했던 것 처럼 Hard Disk 또는 RAM은 접근(Access)속도가 느리기 때문에 cache를 사용합니다. 간략한 예로, CPU의 구조를 배울 때, Instruction 및 Data memo..

[컴퓨터구조][Cache]

CPU의 구조에 대해서 배웠을 때, Instruction memory와 Data memory가 있었던 것을 기억하실 거에요.  Instruction memory와 Data memory는 실제로 Cache memory를 사용합니다. Cache memory를 사용하는 이유는, 메모리 계층 구조를 보시면 알 수 있습니다.    맨 위를 기준으로 Register가 있고, 아래로 가면서 Memory의 크기는 커지지만 Access 속도가 느려집니다. 이런 이유로 Cache memory를 이용해 RAM(주로 memory라고 하면 RAM을 지칭합니다.)의 일부 자주 사용되는 데이터를Cache에 두고 빠르게 접근하고 사용하기 위해서 입니다. 즉, CPU의 효율을 올리기 위해서 사용한다고 볼 수 있습니다.  그렇다면 RA..

[Operating System/운영체제][Synchronization]

· 목차  - Race Condition   - Critical Region(or Critical Section)   - Critical Section Problem Requirement   - Busy Waiting   - Spin lock   - Peterson's solution   - TSL(Test and Set Lock)   - Sleep and Wakeup   - Semaphores(PV operation)     안녕하세요, 이번에는 Synchronization에 대해서 알아보도록 하겠습니다.   Synchronization이 중요한 이유를 말하자면, 프로세스나 스레드의 Race Condition을 방지하고,데이터의 일관성을 유지하기 위해서 입니다.  그렇다면 Race Condition이 ..

[컴퓨터구조][Hazards #2 Control Hazard]

안녕하세요, 지난 시간에 이어서 Control Hazard에 대해서 알아보도록 하겠습니다.     Control Hazard는 파이프라인 구조에서 분기 명령어나 조건부 명령어의 결과가 결정되기 전까지다음에 실행할 명령어를 예측할 수 없는 상황에 발생하는 문제를 의미합니다.  쉽게 말해서, CBZ와 같은 분기 명령어를 만났을 때, CBZ가 가르키는 주소로 분기를 하게 되고 파이프라인은잘못된 명령어를 fetch하게 되면서 파이프라인의 성능을 저하시킬 수 있습니다.  파이프라인의 성능 저하의 예를 들자면, pipeline stall이나 Mispredicted Branch(잘못된 분기 예측)으로 인해서분기 명령어의 결과가 결정되기 전까지 파이프라인을 대기시키거나, 이미 가져온 명령어들을 Flush하기 때문에사이..

[컴퓨터구조][Hazards #1 Data Hazard]

안녕하세요, 이번에는 CPU에서 특정 상황에 대해서 발생하는 Hazards에 대해서 알아보겠습니다. 우선 Hazard는 총 세가지 종류가 있는데요, Structure hazards, Data hazards, Control hazards가 있습니다.       1. Structure hazard    Structure hazard는 access하려고 하는 하드웨어가 바쁘게 수행중일 때 발생합니다. 하드웨어를 늘리면 해결이 가능하지만,    하드웨어를 늘림에 따라서 발생하는 전력소모 등 Trade off가 발생한다는 것은 인지하고 계셔야합니다. 2. Data hazard    쉽게 이야기해서, 첫 명령어가 ADD이고 두번째 명령어가 SUB이라고 할 때, ADD의 destination register를 SUB..

[Operating System/운영체제][Thread]

· 목차 - Thread의 기본 - Kernel threads and user-level threads 안녕하세요, 이번에는 지난 시간의 Process에 이어서 Thread에 대해서 배워보도록 하겠습니다. 스레드(Thread)는 운영체제에서 프로세스 내에서 실행되는 작업의 가장 작은 단위입니다. 스레드는 프로세스의 자원을 공유하며, 다중 스레드를 통해 하나의 프로세스가 여러 작업을 동시에 처리할 수 있습니다. 스레드는 특히 병렬 처리를 통해 시스템의 성능을 향상시키는데 중요한 역할을 합니다. Thread의 기본 위에서 말한 스레드의 특징을 조금 더 자세히 살펴보자면 다음과 같습니다. 1. Lightweight Process(경량 프로세스) 스레드는 기본적으로 프로세스의 자원을 공유하여 프로세스보다 가볍고..

[Operating System/운영체제][Process]

· 목차  - 프로세스(Process)의 구조  - PID, PT, PT entry, PCB  - Process Creation  - Process Termination  - Process States  - Context Switch    안녕하세요, 이번에는 Process를 배우고 다음 시간에 Threads에 대해서 배워보도록 하겠습니다.  우선 Process에 대해서 알아보기 이전에 코어에 대해서 알아야 합니다.CPU 내부의 다이라고 불리는 블록 내부에 위치하는 코어는 CPU에 요구되는 연산을 수행하는 실제 연산 장치입니다.  여기서 프로세스는 실행 중인 프로그램으로 시스템에서 독립적인 메모리 공간을 가집니다.프로세스가 실행되면 운영 체제는 그 프로세스를 CPU 코어에 할당합니다.  스레드는 프로세스..