목록운영체제 (30)
내 잡다한 노트
CPU의 비트는 데이터가 한 번 이동할때 다룰 수 있는 최대 크기를 의미한다. 그래서 CPU와 관련된 부품들은 이 비트와 연관이 깊다. 레지스터나 ALU도 32비트라면 32비트를 처리할 수 있도록 설계가 된다. 32비트 CPU의 경우 메모리 주소 레지스터도 32비트까지 다룰 수 있기 때문에 CPU가 다룰 수 있는 메모리의 최대 크기가 2^32인 4GB가 된다. 물리 주소 공간 : 하드웨어 입장에서 바라본 주소 공간 논리 주소 공간 : 사용자 입장에서 바라본 주소 공간 메모리 영역의 구분 0번 주소부터 ~번 주소까지가 운영체제의 영역이고 그 이후부터는 응용 프로그램의 영역이다. 절대주소는 실제 메모리 주소를 뜻하고 상대주소는 어떤 기준이 되는 주소가 있고 그 주소에서 상대적인 위치 차이를 나타낸다. 운영체..
현대의 시분할 시스템이 되면서 많은 프로세스들을 관리하게 됐다 그래서 프로세스들에게 어느정도의 메모리를 사용하게끔 하는 지를 고민하게 됨 메모리 관리의 이중성 프로세스는 메모리를 많이 차지하려 하고 메모리는 프로세스를 관리를 효율적으로 하고 싶어 한다. 컴파일러와 인터프리터 둘 다 소스코드를 목적코드(기계어)로 바꿔준다. 하지만 약간의 차이점이 존재한다. 컴파일러는 한꺼번에 하고 인터프리터는 한줄씩 코드를 읽어나간다. 또, 컴파일러는 변수를 미리 선언해야 한다. 컴파일은 소스코드를 컴퓨터가 읽을 수 있는 목적코드로 바꿔주고 라이브러리를 사용했다면 연결해준다. 컴파일을 통해 오류를 해결하고 최적화를 해준다. 메모리 관리자가 하는 일 1. fetch 가져오기 2. placement 배치하기 3. replac..
교착 상태를 해결하는 방법은 예방, 회피, 검출, 회복이 있다. 예방과 회피는 방식이 까다롭고 비효율적이라 사용하지 않는다. 보통 검출을 통해 교착 상태를 확인하고 회복으로 문제를 해결한다. 교착상태검출 운영체제가 프로세스의 작업을 관찰하며 교착상태 여부를 주시하는 방식. 보통 타임아웃방식과 자원그래프방식 2가지를 사용한다. 타임아웃을 이용한 방식 일정시간 동안 작업이 진행되지 않는 프로세스를 교착상태가 발생한 것으로 간주하여 처리하는 방식이다. 이건 교착상태가 잘 일어나지 않을 것이라는 가정을 하고 해결하는 방식이다보니 문제가 생길 수 있다. 1. 교착 상태가 아님에도 작업이 진행되지 못하는 프로세스가 강제종료될 수 있다. 2. 모든 시스템에 적용할 수 없다. 하나의 운영체제 내에서 동작하는 프로세스들..
교착 상태는 여러가지 조건에 의해 발생하고 이 조건들이 다 충족되야 발생한다. 1. 상호 배제 한 프로세스가 사용하는 자원은 다른 프로세스와 공유할 수 없는 배타적인 자원이어야 한다. 배타적인 자원은 임계구역으로 보호되기 때문에 다른 프로세스가 동시에 사용할 수 없다. 따라서 배타적인 자원을 사용하면 교착 상태가 발생한다. 2. 비선점 프로세스가 사용중인 자원은 중간에 다른 프로세스가 뺏을 수 없는 비선점 자원이여야 한다. 뺏을 수 없다면 공유도 안되기 때문에 교착 상태가 발생한다. 3. 점유와 대기 프로세스가 어떤 자원을 할당받은 상태에서 다른 자원을 기다리는 상태여야 한다. 다른 프로세스가 필요로 하는 자원을 점유하고 있으면서 다른 자원을 기다리는 대기 상태가 되어야 한다. 4. 원형 대기 점유와 대..
교착 상태 deadlock이라고 불리며 프로세스가 실행중이지만 작업은 이루어지지 않을 때를 교착상태라고 한다. 이걸 예시로 할 때 원탁에서 식사하는 철학자들로 쉽게 설명을 하곤한다. 교착 상태는 아사현상과 비슷해 보이지만 다르다. 아사현상은 운영체제의 잘못으로 발생하지만 교착 상태는 여러 프로세스가 실행되다보니 자연적으로 일어나는 문제이다. 따라서 운영체제는 감시를 하다가 강압적으로 문제를 해결한다. 교착 상태의 발생 시스템 자원, 공유 변수, 응용 프로그램을 사용할 때 발생할 수 있다. 자원할당 그래프 어떤 프로세스가 어떤 자원을 할당했는지를 그래프로 쉽게 나타낸 것이다. 자원이 2개 이상의 프로세스를 동시에 허용하는 경우가 있는데 이걸 다중 자원이라고 부른다.
모든 통신에 관련된 연산은 open, read, write, close 구조라는 것을 잊지 말아야 한다. 파일 파일 기술자는 파일 접근 권한 외에 현재 파일의 어느 위치를 읽고 있는지에 대한 정보도 보관한다. 파일을 이용한 통신 부모 프로세스가 자식 프로세스를 fork로 만들었을 때, 파일 기술자가 자식 프로세스에도 상속된다. 파일 기술자의 위치 정보는 부모와 자식이 공유하게 된다. 부모가 읽기 연산을 해도 기술자가 전진하고 자식이 해도 전진한다. 이때 부모가 기술자를 0번 위치로 이동시키는 명령어가 lseek 이다. 파일은 동기화를 운영체제에서 지원해주지 않기 때문에 wait을 이용해 기다렸다가 작업ㅂ을 시작한다. 파이프 이름없는 파이프와 이름 있는 파이프로 크게 나뉜다. 여기선 이름 없는 파이프를 살..
임계구역 문제를 해결하는 가장 좋은 방법은 잠금이다. 프로세스가 임계구역을 사용할 땐 잠그고 다 사용하면 동기화해서 다른 프로세스가 쓸 수 있도록 한다면 문제를 해결할 수 있을 것이다. 임계구역 문제는 프로세스의 타임아웃 과정에서 생길 수 있는 것 같다. 한정대기를 만족하지 못하는 상황을 교착상태 deadlock이라고 한다. 교착상태는 프로세스가 살아있지만 작업이 진행되지 못하는 상태를 의미한다. 소프트웨어 뿐만 아니라 하드웨어적으로도 임계구역을 해결 할 수도 있다. 세마포어 모니터 공유 자원을 내부적으로 숨기고 공유 자원에 접근하기 위한 인터페이스만 제공함으로써 자원을 보호하고 프로세스 간에 동기화를 시킨다. 시스템 호출과 같은 개념이다. 시스템 호출이란 시스템 자원을 사용자로부터 숨기고 사용자의 요구..
공유 자원 여러 프로세스가 공동으로 사용하는 변수, 메모리, 파일같은 자원을 뜻한다. 임계구역 공유 자원들은 어떤 프로세스가 먼저 사용하느냐에 따라 값들이 달라질 수 있다. 이런 순서에 따라 달라지는 프로그램의 영역을 임계구역이라고 한다. 이런 임계구역은 전역변수 뿐만 아니라 하드웨어의 자원도 될 수 있다. 예를 들어 프린터. 임계구역 문제 해결 조건 세 가지 조건을 만족해야 문제를 해결할 수 있다. 1. 상호 배제 한 프로세스가 임계구역에 들어가면 다른 프로세스는 들어갈 수 없다. 2. 한정 대기 어떤 프로세스도 무한 대기하지 말아야 한다. 3. 진행의 융통성 한 프로세스가 다른 프로세스의 진행을 방해해서는 안된다. 임계구역을 아무도 쓰지 않는다면 기다릴 필요없이 쓴다.