본문 바로가기

CS45

[OS] 프로세스와 스레드 프로세스와 스레드의 차이 [프로그램 - > 프로세스] 프로그램 : 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태를 말한다. 프로그램을 실행하는 순간 해당 파일은 컴퓨터 메모리에 올라가게 되고, 이 상태를 동적인 상태라고 하며 이 상태의 프로그램을 프로세스라고 한다. [프로세스 → 스레드] 스레드 : 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위 스레드는 프로세스와 다르게 스레드 간 메모리를 공유하며 작동된다. 스레드끼리 프로세스의 자원을 공유하면서 프로세스 실행 흐름의 일부가 되는 것이다. 즉, 스레드는 프로세스의 코드에 정의된 절차에 따라 실행되는 특정한 수행 경로다. [프로세스와 스레드의 작동 방식] 프로세스가 메모리에 올라갈 때 운영체제로부.. 2021. 12. 29.
[OS] 07. 메모리 관리 1. 주소 바인딩 프로그램이 메모리에 적재되면 그 프로세스를 위한 독자적인 주소 공간이 생성된다. 이를 논리적 주소(logical address) 혹은 가상 주소(virtual address)라고 부른다. 논리적 주소는 각 프로세스마다 독립적으로 할당되며 0번지부터 시작된다. 반면 물리적 주소(physical address)는 물리적 메모리에 실제로 올라가는 위치를 말한다. 보통 물리적 메모리의 낮은 주소 영역에는 운영체제가 올라가고, 높은 주소 영역에는 사용자 프로세스들이 올라간다. 프로세스가 실행되기 위해서는 해당 프로그램이 물리적 메모리에 올라가 있어야 한다. 또한 CPU가 기계어 명령 수행을 위해 논리적 주소를 통해 메모리 참조를 하게 되면 해당 논리적 주소가 물리적 메모리의 어느 위치에 매핑되는.. 2021. 12. 27.
[OS] 06. CPU 스케줄링 CPU : 프로그램의 기계어 명령을 실제로 수행하는 컴퓨터 내의 중앙처리장치 CPU는 프로그램이 시작되어 메모리에 올라가면 프로그램 카운터가 가리키는 주소의 기계어 명령을 하나씩 수행한다. 기계어 명령은 크게 3가지로 나뉜다. ①CPU 내에서 수행되는 명령 CPU 내에서만 수행되므로 명령의 수행속도가 매우 빠르다. CPU 내의 레지스터에 있는 두 값을 더해 레지스터에 저장하는 Add 명령이 이에 해당. 사용자 프로그램이 직접 수행할 수 있는 일반명령에 해당한다. ②메모리 접근을 필요로 하는 명령 CPU 내에서 수행되는 명령보다는 시간이 오래 소요되지만 비교적 짧은 시간에 수행할 수 있는 명령에 해당된다. 메모리에 있는 데이터를 CPU로 읽어들이는 Load명령, CPU에서 계산된 결괏값을 메모리에 저장하는.. 2021. 12. 26.
[OS] 스핀락, 뮤텍스, 세마포어 임계 영역에 접근하는데 있어서 동기화를 위해 사용되는 기법인 스핀락, 뮤텍스, 세마포어에 대해서 알아보자. locks 방식을 이용한 동기화 기법 스핀락(spinlock), 뮤텍스(mutex) 상호 배제가 되도록 만들어진 lock 변수 사용 lock을 소유한 스레드만이 임계 영역에 진입할 수 있다. lock을 소유하지 않은 스레드는 대기한다. wait-signal 방식을 이용한 동기화 기법 세마포어(semaphore) n개의 자원을 사용하려는 m개의 프로세스(또는 스레드)의 관리 제공 자원을 소유하지 못한 프로세스(또는 스레드)는 대기(wait) 자원의 사용을 마친 프로세스(또는 스레드)는 알림(signal) 스핀락(Spinlock) lock 변수 true : lock을 잠근다, lock을 소유한다. fa.. 2021. 12. 22.
[OS] 공유 자원 접근 문제 공유 데이터의 동시 접근은 데이터의 불일치를 발생시킬 수 있다. Race Condition Race Condition이란 두 개 이상의 concurrent한 프로세스(혹은 스레드)들이 하나의 공유 자원에 접근할 때 입력 또는 조작의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태를 말한다. Critical Section 임계 영역이란 공유 데이터를 접근하는 코드 영역을 의미한다. 이러한 임계 영역에 여러 프로세스가 동시에 접근한다면 위와 같은 race condition이 발생할 수 있다. 이를 방지하기 위해 둘 이상의 프로세스가 동시에 critical section에 진입하지 못하게 막아야 하는데 이를 Mutual exclusion(상호배제)라고 한다. Race Condition 해결을 위한 충족.. 2021. 12. 22.
[OS] 05. 프로세스 관리 1. 프로세스의 개념 실행 중인 프로그램을 의미 디스크에 존재하던 프로그램이 메모리에 올라가서 실행 되기 시작하면 프로세스가 된다. 프로세스는 CPU를 획득해 자신의 코드를 수행하기도 하고, 때로는 CPU를 반환하고 입출력 작업을 수행하기도 한다. 프로세스의 문맥(context)이란 프로세스가 현재 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보를 의미한다. 여러 프로세스가 실행되는 시분할 시스템 환경에서는 타이머 인터럽트에 의해 짧은 시간 동안 CPU를 사용한 후 빼앗기는 식으로 CPU 관리가 이루어진다. CPU를 다시 획득했을 때 이전의 상태를 불러오기 위해 필요한 정보가 프로세스의 문맥이다. 프로세스의 문맥은 크게 세 가지로 분류된다. 하드웨어 문맥 : CPU의 수행 상태를 나타낸다.. 2021. 12. 21.