전체 글 113

페이징 시스템(Paging System)

페이징 시스템(Paging System) Paging : 커다란 크기의 작업을 고정된 일정한(동일한) 크기로 나누어 처리하는 방식입니다. (번외, Segemetation : 메모리를 프로세스의 크기에 따라 잘라 넣는 방식(배치 정책 중 또 다른 정책)) - p : 가상 메모리의 page 번호 - d : p안에서 참조하는 위치(페이지 내부 주소; 변위; offset) paging system에서 해당 프로세스에서 특정 가상 주소를 가지고 어떤 데이터에 접근하고자 하면, -> page table에 해당 가상 주소와 그 page번호(p)가 있는지 확인합니다. -> page 번호가 있으면 이와 매핑된 첫 물리 주소(p')를 알아냅니다. -> 그러면 페이지 처음부터 얼마 떨어진 위치인지를 알려주는 변위(d)를 더..

가상 메모리(Virtual Memory System)

가상 메모리(Virtual Memory System) 한정된 크기의 물리 메모리 안에서 최대한 많은 프로세스를 할당하여 효율적으로 사용하기위해 만들어진 메모리입니다. 즉, 보조 기억장치를 주 기억장치처럼 사용할 수 있는 것과 같습니다. (이를 통해, 대용량의 프로그램이 물리 메모리의 크기를 초과하여도 얼마든지 실행이 가능한 이유이다.) 가상 메모리(Virtual Memory)의 장점 1. 많은 프로그램을 동시에 실행할 수 있습니다. 2. 실제 물리 메모리의 크기에 영향을 받지 않습니다. 3. 프로세스의 일부분만 Swap하게 처라하므로써 입출력 오버헤드가 감소합니다. 메모리 관리 유닛(MMU(Memory Management Unit)) CPU에 코드 실행시, 가상 주소 메모리 접근이 필요한 경우, 해당 주..

동기화(Synchronization)

동기화(Synchronization) 작업들 사이에 실행 순서를 정해주는 것입니다. (단, 레지스터, 스택, PC는 스레드가 공유하지 않습니다.) 동기화 이슈 여러 스레드가 동일한 자원(데이터)에 접근하는 경우 동기화 이슈가 발생할수 있다. 동기화 이슈 해결방안 1) Mutual Exclusion(상호배제) 한 번에 한 스레드만 들어가서 작업을 할 수 있도록 하는 것 lock.acquire() for i in range(100000): g_count += 1 lock.release() 임계 자원(criritical resource) -> g_count 임계 영역(critical section) -> lock.acquire() ~ lock.release() 의 영역 Test-and-Set 더이상 쪼갤 수 ..

스레드(Thread)

스레드(Thread) 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위입니다. Light Weight Process라고도 합니다. 멀티 스레드(Multi Thread) 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미합니다. 멀티 프로세싱(Multi Processing) 여러 개의 CPU를 사용하여 여러 프로세스를 동시에 수행하는 것을 의미합니다. 스레드(Thread)의 장단점 장점 단점 Thread 1. 응답성 향상 2. 자원 공유 효율성 3. 작업이 분리되어 코드가 간결 1. 하나의 스레드에 문제가 있어도 전체 프로세스가 영향을 받는다. 2. 스레드를 많이 생성하면, Context Switching이 많이 일어나 성능이 저하됩니다. 3. 동기화 이슈로 비정..

스케쥴링 알고리즘(Schduling Algorithm)

FIFO(First In First Out) Scheduler 프로세스가 레디 큐에 진입하면 이 프로레스의 프로세스 제어블록(PCB)을 큐의 끝에 연결합니다. CPU가 가용상태로 변경되면 레디 큐의 앞부분에 있는 프로세스에 할당됩니다. 동시에, 레디 큐에서 제거됩니다. 개념 준비 상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 방식입니다. 특징 1. 공평성 2. 중요한 작업이 덜 중요한 작업을 기다리는 상황이 있을 수 있다. 장점 구현 용이(Queue), 공평성 증가 단점 평균 응답 시간이 길다. 예시 Queue, 화장실 대기줄 SJF(Shortest Job First) Scheduler CPU 점유시간이 가장 짧은 프로세스에 CPU를 먼저 할당하는 방식입니다. 개념 준비 상태 큐에 있는 프로세..

프로세스 스케쥴링(Process Scheduling)

배치 처리 시스템(Batch Processing System) 여러 프로그램을 순차적으로 실행 시키는 것입니다. 시분할 시스템(Time Sharing System) 다중 사용자 지원을 위하여 컴퓨터 응답 시간을 최소화하는 시스템 멀티 태스킹(Multi Tasking) 단일 CPU에서, 여러 응용 프로그램이 동시에 실행되는 것처럼 보이도록하는 시스템 멀티 태스킹(Multi Tasking) 멀티 프로세싱(Multi Processing) 사용하는 CPU의 수 1 여러개 멀티 프로세싱(Multi Processing) : 여러 CPU에서 하나의 응용 프로그램을 병렬로 실행하여, 실행속도를 높이는 방법 멀티 프로그래밍(Multi Programming) CPU를 최대의 효율성으로 활용하는 시스템

프로세스(Process)란?

프로세스(Process) 쉽게 말하여, 현재 실행중인 프로그램을 프로세스라고 합니다. 프로세스 != 응용프로그램 응용프로그램 : 응용 프로그램은 여러 프로세스를 구성할 수 있다. 1) 유저 프로세스(User Process) - Excution of a Program with Restricted Rights - 하드웨어에 대한 Full Access는 불가능합니다. - Application의 Binary Interface(ISA), System Call까지는 다룰 수 있습니다. 2) 커널 프로세스(Kernel Process) - 프로세스를 구조체로 운영합니다. - text structure이라는 인스턴스 여러개를 만들어서 linked list로 묶어 관리합니다. - Address Space, CPU/Memo..

운영체제란?

운영체제(Operating System) 하드웨어 리소스에 대한 애플리케이션 소프트웨어 액세스를 제공하는 '소프트웨어'의 특수 계층입니다. - 복잡한 하드웨어 장치의 편리한 'abstraction' - 'shared' 리소스에 대한 'Protected' 액세스 - ‘Security and authentication’ - ‘Communication’ amongst logical entities 기타 개념 1) ISA(Instruction Set Architecture) - 해당 CPU가 어떻게 생겼는지 알 수 있다. 2) API(Application Programming Interface) - 일종의 라이브러리 같은 것이다. 3) ABI(Application Binary Interface) - 운영체제에 ..

메모리(Memory)

Register : 레지스터는 CPU 내부에 있는 매우 빠른 기억장치입니다. CPU가 실행하는 명령어나 계산 결과를 임시로 저장하고, 다음 명령어 실행 시에 빠르게 접근하여 처리합니다. 대개 몇 개의 비트로 구성되어 있으며, 레지스터의 개수는 CPU의 종류에 따라 다릅니다. SRAM(Static Random Access Memory) : SRAM은 데이터를 저장하는 데 사용되는 메모리 중 하나로, 전원이 공급되는 한 데이터를 계속 유지할 수 있습니다. SRAM은 매우 빠르지만, 비용이 비싸기 때문에 메모리 용량이 작습니다. 주로 캐시 메모리나 레지스터와 같이 CPU가 빠르게 접근해야 하는 데이터를 저장하기 위해 사용됩니다. DRAM(Dynamic Random Access Memory) : DRAM은 SR..