컴퓨터 시스템 7

[컴퓨터 시스템] 교착상태(deadlock)와 기아상태(starvation)

교착상태(deadlock) 2개 이상의 스레드 혹은 프로세스가 서로 상대방의 작업이 종료되기 만을 기다리는 상태. 즉, 절대로 참이 될 수 없는 조건을 기다리면서 정지되어있는 경우를 말한다. 상호 배제 : 공유 자원에 대해 배타적인 접근권을 요구한다. 점유 대기 : 프로세스 혹은 스레드가 할당된 자원을 점유한 채 다른 자원을 기다린다 비선점 : 프로세스 혹은 스레드가 할당된 자원의 사용을 끝낼 때까지 다른 작업이 그 자원을 차지할 수 없다. 순환 대기 : 각 프로세스 혹은 스레드가 순환적으로 다음 프로세스 혹은 스레드가 요구하는 자원을 가지고 있다. 이에 대한 쉬운 예시가 '식사하는 철학자 문제' 이다 다섯 명의 철학자들이 원탁에 둘러앉아 각각 하나의 젓가락을 가지고 있는 상태이므로 어느 누구도 젓가락 ..

컴퓨터 시스템 2020.10.15

[컴퓨터 시스템] 뮤텍스와 세마포어

뮤택스(Mutax) == Binary Semaphore 임계구역(critical section)에 하나의 스레드 혹은 프로세스만 들어갈 수 있다. 키를 통해서 뮤텍스를 잠그거나(locking) 여는(unlocking) 두 가지 상태를 취하여 상호 배타성을 제공한다. 세마포어(Semaphore) == Counting Semaphore 임계구역(critical section)에 여러 개의 스레드가 들어갈 수 있다. 세마포어 s는 몇 개의 스레드가 해당 임계구역에 접근할 수 있는지를 나타내는 전역 변수이다( 비음수 정수 값 ). 이는 P와 V라는 특정 연산을 통해서만 조작이 가능하다. 간단히 말하면 P는 임계구역으로 진입할 때, V는 임계구역을 빠져나올 때 수행하는 연산이다. P(s) : wait(s) { w..

컴퓨터 시스템 2020.10.15

[컴퓨터 시스템] 스레드

스레드 ( Thread ) 하나의 프로세스에 여러 개의 쓰레드 생성이 가능하다. 또한 동시에 여러 개의 쓰레드를 병렬적으로 실행할 수 있다. 프로세스 안에 있기 때문에 프로세스의 데이터에 모두 접근이 가능하기 때문에 자원을 효율적으로 공유할 수 있다. 쓰레드는 프로세스(가상 메모리) 내부에서 별도의 stack 영역, stack pointer 등을 포함하는 별도의 쓰레드 컨텍스트를 가진다. 이외에 Heap, bss, data, code 세그먼트는 모든 쓰레드가 공유하고 있다. (리눅스에서는 Light weight process라고도 불린다). 멀티 스레드 ( Multi Thread ) 소프트웨어 병행 작업 처리를 위해 이용하는 기법이다. 프로세스를 여러개의 Thread로 분할하고 분할된 thread들을 병..

컴퓨터 시스템 2020.10.14

[컴퓨터 구조] 예외 상황

예외 상황 프로세서의 상태 변화에 대한 대응이다. 프로세서가 이벤트 발생을 감지하면 exception handler라는 운영체제 서브루틴으로 들어가 예외 상황을 처리한 후 중단 되었던 프로그램을 다시 실행하거나 중단한다. 예외의 종류로는 인터럽트, 오류, 중단 등이 있다. 예외 상황 중 오류(Fault)와 중단(Abort)의 차이 오류 ( Fault ) Potentially recoverable error 즉, 핸들러가 정정할 가능성이 있는 상태의 경우에는 fault handler로 제어를 넘겨준다. 핸들러가 에러 조건을 정정하게되면 오류를 발생시킨 인스트럭션을 return하여 재실행하고, 그렇지 못한 경우에는 abort 루틴으로 리턴하여 프로그램을 종료한다. 중단 ( Abort ) 주로 DRAM 혹은 ..

컴퓨터 시스템 2020.10.11

[컴퓨터 시스템] 프로세스와 스케줄러

프로세스 ( Process ) 바이너리 형태의 실행가능 목적파일(실행 파일)로 메모리에 적재되어 실행 중인 프로그램을 프로세스라고 한다. 응용 프로그램은 하나 이상의 프로세스로 이루어져있다. 하나의 응용 프로그램이 여러 프로세스들과 상호작용하면서 실행될 수도 있기 때문이다. ⁕ 엄밀히 말하면 프로그램은 코드와 데이터가 합쳐진 것으로 디스크 상에 목적파일로 혹은 주소공간에서 세그먼트로 존재한다. 그리고 프로세스는 실행 중에 있는 프로그램의 특정 상태이다. fork 함수의 작동 방식을 보면 차이가 명확해진다. fork 함수는 부모 프로세스를 복제하여 새로운 자식 프로세스를 만들어내는데 자식 프로세스는 부모와 동일한 프로그램을 실행한다(교과서 724p). 배치 처리 시스템 ( Batch Processing )..

컴퓨터 시스템 2020.10.10

[컴퓨터 시스템] 가상 메모리

키워드 페이징 메모리 단편화 내부 단편화 외부 단편화 페이지 교체 알고리즘 세그맨테이션 가상메모리 메인 메모리를 보다 효율적으로 더 적은 에러를 가지도록 관리하기 위해 메인메모리의 추상화로서 가상메모리 virtual memory(VM)를 사용한다. 각 프로세스에 하나의 사적 주소 공간으로 존재한다. 때문에 각 프로세스의 주소공간을 다른 프로세스에 의해 침해받지 않도록 하여 에러를 줄일 수 있다. 또한 각 프로세스마다 통일된 주소공간이 존재하게되어 메모리 관리를 단순화 시키는 역할도 한다. 프로세스 전체가 메모리에 올라와있지 않아도 실행이 가능하기 때문에 프로세스가 물리 메모리보다 커도 프로그램을 실행시킬 수 있다는 장점이 있다. 물리 주소 방식 CPU가 메모리에 접근할 때 물리 주소(PA, physica..

컴퓨터 시스템 2020.10.07

[컴퓨터 시스템] 컴퓨터 시스템 개괄

컴퓨터 시스템은 응용프로그램을 실행하기 위해 함께 동작하는 하드웨어 & 시스템 소프트웨어로 구성 프로그램 소스 프로그램(바이너리 파일 - non text file ) 0, 1로 이루어진 비트들로 구성 데이터의 저장과 처리를 목적으로 함 텍스트 파일(text file - EX hello.c ) byte 단위(8 bits)로 구성 오로지 ascii 문자들로 구성 프로그램 생성 - 사용자가 에디터에서 소스 프로그램(바이너리 파일)을 생성하고 내부적으로는 텍스트 파일 형태로 저장 프로그램 실행 - 텍스트 파일이 컴파일러와 링커에 의해 바이너리 실행파일로 번역 컴파일 시스템 소스 파일(hello.c) -> 실행파일(hello)로 번역하는 시스템 전처리기, 컴파일러, 어셈블러, 링커 로 구성 시스템 하드웨어 조직 ..

컴퓨터 시스템 2020.10.06