본문 바로가기

개발에 도움이 되는/CS

(7)
동시성(Concurrency), 병렬성(Parallelism) - 동시성 : 여러 개의 작업이 있을 때 Context Switching을 통해 여러 작업을 시분할 방식으로 처리하여 동시에 실행되는 것 처럼 보이는 것 (ex. 싱글 코어에서 여러 작업 수행) - 병렬성 : 실제로 동시에 여러 작업이 처리되는 것 (ex. 멀티 코어) 동시성은 여러 일을 한꺼번에 다루는 데 관한 것이다. 병렬성은 여러 일을 한꺼번에 실행하는 데 관한 것이다. - Rod Pike (Google Developer) - 암달의 법칙 (Amdahl's Law) : 코어가 N배 늘어나더라도 성능이 N배로 늘어나지 않음. 그 이유는 프로그램의 모든 부분을 Parallel 하게 짤 수 없기 때문에 이런 현상이 발생
가비지 컬렉션(Garbage Collection) - 가비지 컬렉션 (Garbage Collection) : 메모리 관리 기법 중 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 더 이상 사용하지 않아 필요 없게 된 영역을 해제하는 기능 가비지 컬렉터는 묵시적으로 필요 없게 된 메모리 영역을 해제함으로써 메모리 누수를 막아주고, 메모리를 효율적으로 관리할 수 있게 도와준다. - 작동 방식 1. Reference Counting : 객체를 참조하는 레퍼런스의 개수를 저장하여 이 개수가 0이 되었을 때 메모리에서 해제하는 방법 이 방법은 구현하기 쉽고 빠르다는 장점이 있지만, 순환 참조가 되었을 때 이를 탐지하지 못한다는 단점이 있다. 위의 그림과 같이 순환 참조가 되었을 때는 메모리를 해제시키지 못한다. 2. Mark & Sweep : Root ..
컴퓨터를 켜면 일어나는 과정 (OS 부팅 과정) 1. 전원을 켜면 파워 서플라이가 메인보드에 전기를 공급하고, 메인보드가 작동한다. 2. 메인보드에 내장된 메인 메모리인 ROM (Read Only Memory)의 BIOS (Basic Input Output System)가 실행된다. - BIOS : 시스템 보드 칩에 포함된 가장 먼저 실행되는 소프트웨어. 컴퓨터의 하드웨어를 식별, 구성, 테스트하고 운영 체제로 연결하여 추가 지침을 내릴 수 있도록 함 (이 절차를 부트 프로세스라고 부름) 3. BIOS는 RAM, 키보드, 디스크, 기타 하드웨어 등 필수적인 주변 장치들이 문제 없이 동작하는 지 확인하기 위한 테스트인 POST (Power On Self Test)를 동작 시킨다. 만약 문제가 있으면 삑 소리와 함께 에러메시지를 나타내고 부팅이 중단된다...
가상 메모리(Virtual Memory) - 가상 메모리 (Virtual Memory) : 물리적 메모리 크기의 한계를 극복하기 위해 나온 기술. 프로세스를 실행할 때 실행에 필요한 일부만 메모리에 로드하고 나머지는 디스크에 두는 것이며, 프로세스 전체가 물리적 메모리에 있는 것처럼 수행되는, 즉 물리적 메모리가 훨씬 많이 있는 것처럼 보이게 된다. 항상 모든 프로그램에 대한 데이터가 필요한 것이 아니기 때문에 프로그램의 일부분을 필요한만큼 계속 RAM에만 올려놓도록 하고 나머지는 Backing Storage에 넣어놓는다. 결과적으로 메모리에 작은 양의 주소 공간만 있으면 충분히 프로세스를 수행할 수 있고, 그에 따라 더 많은 프로그램을 동시에 실행할 수 있게 된다. 가상 메모리를 구현하기 위해서는 메모리 관리 하드웨어인 MMU (Memory ..
뮤텍스(Mutex)와 세마포어(Semaphore)의 정의 - 임계 구역 (Critical Section) : 여러 Process or Thread가 공유 자원에 접근하는 부분. 그렇기 때문에 이 임계 구역에 여러 Process나 Thread가 한번에 접근할 수 없도록 관리를 해줘야 한다. - 뮤텍스 (Mutex) : 공유 자원에 대한 접근을 동기화하기 위해 사용되는 상호배제 기술. Locking 메커니즘으로 오직 하나의 Thread만이 동일한 시점에 Lock을 얻어 임계 영역에 들어올 수 있다. 그리고 오직 그 Thread만이 Lock을 반환하여 임계 영역에서 나갈 때(Unlock) 다른 Thread가 접근할 수 있다. 뮤텍스는 오직 1개의 Thread만 접근할 수 있기 때문에 이진 세마포어와 같은 개념이다. - 세마포어 (Semaphore) : 공유 자원에 ..
경쟁상태(Race Condition), 교착상태(DeadLock), 기아상태(Starvation)의 정의 - 요약 경쟁상태(Race Condition) : 공유 자원에 대해 여러 개의 프로세스가 동시에 접근을 시도할 때 접근의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태 교착상태(DeadLock) : 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있기 때문에 아무것도 완료되지 못하는 상태 - 교착 상태의 조건 : 아래 4가지 조건을 모두 충족시켜야 함 1. 상호배재 : 프로세스들이 필요로 하는 자원에 대해 배타적인 통제권을 요구한다. 2. 점유대기 : 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다. 3. 비선점 : 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 뺏을 수 없다. 4. 순환대기 : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있..
Program, Process, Thread Program : 파일이 Disk에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태 (코드 덩어리 파일) Process : 운영체제로부터 자원을 할당 받은 작업의 단위(메모리에 올라가 프로그램을 실행한 상태 = 동적인 상태) Process는 Code, Data, Stack, Heap의 구조로 되어 있는 독립된 메모리 영역을 할당 받는다. 각 Process는 별도의 주소 공간에서 실행되며, 서로 독자적인 메모리 공간을 갖기 때문에 서로 메모리 공간을 공유할 수 없다. (= 다른 Process의 변수나 자료구조에 접근할 수 없다.) 다른 Process자원에 접근하려면 Process간의 통신(IPC)을 이용해야 한다. Process는 최소 하나 이상의 Thread를 포함한다. - Processor :..

반응형