Logical address VS physical address Logical address(=vitual address) 프로세스마다 독립적으로 가지는 주소공간 각 프로세스마다 0번지 부터 시작 CPU가 보는 주소는 logical address 프로그램 실행 중에 CPU가 생성하는 주소로 가상 주소라고도 한다. physical address 메모리에 실제 올라가는 위치(실행되기 위해서) *주소바인딩 : 주소를 결정하는 것 Symbolic address(프로그래머가 지정/호출하는 변수/함수) -> Logical address -> physical address 물리적 메모리가 결정되는 시점 Compile time biniding - 물리적 메모리에 다른 주소가 비어있어도, 컴파일시에 이미 물리적주소가 정..
Deadlock이란? 상호배제에 의해 나타나는 문제점. 둘 이상의 프로세스들이 각각 자원을 점유한 상태에서, 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 서로의 작업이 끝나기만을 기다리다가 영원히 끝나지 않는 상황을 의미한다. Deadlock 이 동작하기 위한 4가지 조건 - Mutual exclusion (상호배제) : 매 순간 하나의 프로세스만이 자원을 사용할 수 있음 -> 자원을 얻었으면 독점적으로 쓴다. - No preemption(비선점) : 프로세스는 자원을 스스로 내어놓을 뿐 강제로 빼앗기지 않음 - Hold and wait(보유 &대기) : 자원을 가진 프로세스가 다른 자원을 기다릴때 보유자원을 놓지 않고 계속 가지고 있음 - Circular wait (순환대기): 자원을 기다리는 ..
싱글코어가 아니라 멀티코어라면, 어떻게 동기화가 이뤄질까요? 싱글코어 멀티코어 공통점 Lock(한 번에 하나의 쓰레드만이 접근할 수 있도록 공유 자원을 잠그는 역할) 사용 -> 여러 개의 쓰레드가 동시에 접근하는 경우에 발생할 수 있는 데이터 불일치 문제를 방지 차이점 캐시 일관성 유지 필요 -> 캐시 프로토콜 사용 특징 - 락 없는 동기화 기법을 사용하는 것이 더욱 효율적인 경우가 있음 - 멀티코어에서 락은 하드웨어적으로 구현되는 것이 보편적 ex.원자적 연산(atomic operation), 메모리 배리어(memory barrier) 원자적 연산(Atomic Operation) 여러 개의 쓰레드/프로세스에서 동시에 공유 변수에 접근할 때, 해당 변수를 수정하는 연산을 원자적으로 처리 즉,하나의 연산이..
동기화란 다중 스레드나 다중 프로세스 환경에서 공유 자원에 대한 접근을 조절하기 위해 사용되는 기술 임계 구역이란? 다른 프로세스와 공유하는 데이터에 접근하고 그 데이터를 갱신할 수 있는 코드 영역을 말한다. 경쟁 상태가 발생할 수 있으므로 멀티프로세스 환경에서 둘 이상의 프로세스가 동시에 접근하지 않도록 보장해주어야 한다. 임계구역 문제 해결방법 1. 임계 영역엔 동시에 하나의 프로세스만 접근한다. 2. 여러 요청에도 하나의 프로세스의 접근만 허용한다 3. 임계 구역에 들어간 프로세스는 빠르게 나와야한다 Race Condition 경쟁상태 또는 경쟁조건. 멀티스레드 환경에서 쓰레드들이 코드영역, 데이터 영역과 같은 공유자원에 접근할 때, 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태를 말한다...
프로세스란? 프로그램이 메모리에 올라왔을때 프로세스라고 한다. 프로세스 생성과 종료 *생성 부모프로세스: 다른 프로세스를 생성한 프로세스 자식프로세스: 생성된 프로세스 *종료 부모 프로세스가 종료될 경우 그 프로세스의 모든 후손들을 연쇄적으로 종료시킨 후 종료 - 자발적 종료 : 프로세스가 명령을 모두 수행 후 코드 마지막에 exit() 시스템 콜을 추가해 운영체제에 자신이 종료됨을 알리는 방식 - 비자발적 종료 : 부모 프로세스가 abort() 함수를 통해 자식 프로세스의 수행을 강제로 종료하는 것이다. 부모프로세스와 자식프로세스 - 프로세스와 자식 프로세스는 독립적인 주소 공간을 갖는 경우 - 프로세스와 자식 프로세스는 독립적인 주소 공간을 공유하는 경우(자원을 공유) : Copy On Write C..
단기, 중기, 장기 스케쥴러 장기 스케쥴러 디스크에서 새로운 프로세스를 가져와 준비 상태로 만들어 놓는 역할만 수행 시작 프로세스중 어떤것을 ready queue로 보낼지 결정 프로세스에 memory(및 각종자원)을 주는 문제 메모리에 올라가는 프로그램 수를 제어 중기 스케쥴러 실행 가능한 프로세스를 선택하여 메모리에 로드 메모리 관리와 같은 중요한 운영 체제 리소스의 할당을 관리 ex. 페이지 교체 알고리즘이 있습니다. 단기 스케쥴러: 어떤 프로세스를 대기상태로 보낼지, cpu를 할당할지 정함 어떤 process를 다음번에 running 시킬지를 결정 프로세스에 cpu를 주는 문제. 충분히 빨라야한다. 즉, 단기 스케줄러의 실행 빈도가 높습니다. 단기 스케줄러는 이벤트가 발생할 때마다 호출됩니다. 실행..
쓰레드란? 쓰레드는 Thread는 process 내에서 독립적으로 일을 수행하는 단위 멀티쓰레드란? 하나의 프로세스내에 여러스레드로 자원을 공유하며 작업을 나누어 수행 하는역할? 하나의 process에는 여러개의 Thread가 존재할 수 있고, 하나의 process에 속해있는 여러개의 Thread는 PCB의 code나 bss, data와 같은 자원을 공유하며, 공유 메모리를 통해 통신할 수 있다. OS는 각각의 thread를 TCB(Thread Control Block)이라는 자료구조로 관리를 한다. 쓰레드를 쓰는 이유? - 동일한 일을 하는 프로세스가 여러개 있을 경우 각각 code/data/stackheap 영역이 각각 만들어져서 메모리 낭비가 생김 - 같은일을 하는 프로세스를 여러개 띄우고 싶다면,..