면접을 위한 CS 전공지식 노트를 공부한 내용 정리 메모리 관리운영체제가 대표적으로 해야 하는 일 중에 하나가 바로 메모리 관리이다.-> 컴퓨터 내의 한정된 메모리를 극한으로 활용해 효율을 높여야 한다. 가상메모리(virtual mermory)가상메모리는 메모리 관리 기법의 하나로 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화해 사용자들에게 큰 메모리로 보이게 만드는 것을 말한다. 가상적으로 주어진 주소를 가상 주소(logical address)라 하며, 실제 메모리상에 있는 주소를 실제 주소(physical address)라고 한다. 가상 주소는 메모리관리장치(MMU)에 의해 실제 주소로 변환된다. -> 이를 통해 사용자는 실제 주소를 생각할 필요 없이 프로그램을 구축할 수 있게 된다. 가상 메모..
쓰레드 동기화멀티 쓰레드 환경에서 각각의 쓰레드는 프로세스의 코드, 데이터, 힙 영역을 공유한다. 이때 다수의 쓰레드가 동시에 공유 데이터에 접근하게 되면, 공유 데이터가 훼손되는 문제가 발생한다. 기존에 원했던 작업은 Thread A에서 수정한 value 값을 Thread B에서 이용하는 것이지만, Thread A가 실행하고 종료되지 않은 상황에서 Thread B가 들어와 작업을 수행했기 때문에 1이 아니라 0이 찍히는 문제가 발생한다. 이러한 문제를 해결하기 위해 쓰레드 동기화 작업이 필요하다! 먼저, 알아야 할 용어들이 있다 바로 임계구역(Critical Section)과 경쟁 조건(Race Condition)이다. 임계 구역(Critical Section)멀티 쓰레드 환경에서, 둘 이상의 쓰레드..
쓰레드(Thread)프로세스 내부에서 실행되는 작은 작업 단위 쓰레드의 특징 1. 프로세스들이 서로의 데이터에 접근하는 것은 불가능하지만, 스레드는 프로세스 내부에 존재하여 프로세스의 데이터 영역에 접근이 가능하다. 또한 스레드끼리 서로의 데이터에 접근하는 것이 가능하다. 2. 스레드도 작업 단위이기 때문에 프로세스처럼 작업을 병렬로 처리해 속도를 높일 수 있다. 3. 스레드는 함수로 구현이 되기 때문에 지역 변수와 같은 데이터를 다루고, 이 데이터를 관리하기 위해 stack 메모리 영역을 가진다. 이 stack 공간은 프로세스가 가지는 stack 영역과는 별개이며, 스레드의 메모리 영역을 Thread stack 이라고 부른다. 4. code, data, heap 영역은 다른 스레드와..
프로세스와 스레드 둘을 비교하기 앞서 둘에 대한 간단한 정리를 해보려한다.프로세스프로세스는 메모리에 올라가 컴퓨터에서 실행되고 있는 프로그램을 의미하며,CPU 스케줄링의 대상이 되는 작업(=Task) 이라는 용어와 같은 의미로 쓰인다. 프로세스의 작업을 완료하기 위해서는 다음과 같은 자원(resource)이 필요하다.메모리CPU파일입출력 장치 *참고프로세스의 구조는 메모리 구조를 참고하면 된다.프로세스의 상태 생성 상태(create)프로세스가 생성된 상태를 의미하며 fork() 또는 exec() 함수를 통해 생성한다. 이때 PCB가 할당된다. 운영체제에서 프로세스 생성 후 메모리 공간이 여유로운지 확인하고, 공간이 충분하면 프로세스 주소 공간을 할당한 후 프로세스를 준비 상태로 바꿔준다. 메모리 공간이..