OS (6) 썸네일형 리스트형 교착상태(Deadlock) 포스팅은 반효경 교수님의 운영체제 강의를 정리한 내용입니다. Banker's 알고리즘이나 Wait for graph를 통한 교착상태 해결 방법은 정리하지 않았습니다. 이 부분은 강의를 참고하시면 좋을 것 같습니다. 교착상태(Deadlock)란? 일련의 프로세스들이 서로가 가진 자원(Resource)을 기다리며 block된 상태를 의미합니다. 여기서 자원(Resource)이란 하드웨어, 소프트웨어 등을 모두 포함하는 개념 I/O 장치, CPU cycle, memory space 등 프로세스가 자원을 사용하는 절차 : 요청(Request), 할당(Allocate), 사용(Use), 방출(Release) Deadlock 발생의 4가지 조건 Deadlock 이 발생하기 위해서는 아래 4가지 조건을 모두 충족해야.. 프로세스와 스레드 외 여러가지 프로그램 - 어떤 작업을 하기 위해 OS 위에서 실행할 수 있는 파일 EX) 브라우저, 카카오톡 프로세스 - 실행 중인 프로그램 프로세서 - CPU를 의미, 프로세스가 동작할 수 있도록 도와줌 작업 관리자를 열어보면 쉽게 위 3가지를 구분할 수 있다. 작업 관리자를 열면 현재 실행중인 프로그램(프로세스)들을 보여준다. 그리고 옆 컬럼을 보면 CPU 사용률이 나온다. 마치 CPU가 프로세스들을 관리하는 것 같은 모습이다. 이것을 CPU 스케줄링이라 부른다. 참고로 프로그램을 실행중이려면 메모리에 올려야 한다. 프로세스 앞서 프로세스는 실행중인 프로그램 했습니다. 프로그램이 실행되려면 즉, 프로세스가 되려면 Resource, Thread를 필요로 합니다. Resource - CPU, 메모리와 같은 자원을 의.. 프로세스의 상태와 문맥 교환(Context Switching) 프로세스의 상태는 실행(Running), 준비(Ready), 봉쇄(bloacked, wait, sleep) 세 가지로 구분하고 이 밖에도 시작(new), 완료(terminated) 상태도 있다. 실행 프로세스가 CPU를 보유하고, 기계어 명령을 실행하고 있는 상태를 가르킨다. 준비 프로세스가 CPU만 보유하면 당장 명령을 실행할 수 있지만 CPU를 할당받지 못한 상태를 가르킨다. 봉쇄(Blocked, wait) CPU를 할당받더라도 당장 명령을 실행할 수 없는 프로세스의 상태를 말한다. 봉쇄 상태의 예로는 프로그래밍 언어에서 input/print가 있지 않을까 싶다. 입력 받는 내용을 출력하는 코드가 있다고 했을 때 입력이 일어나기 전까지는 그 어떠한 일도 수행할 수 없는 상태에 빠진다. 시작(new) .. OS - DMA 컨트롤러(Direct Memory Access), 캐싱 기법 DMA 사용자 프로그램에 정의된 코드에 따라 입출력 장치의 컨트롤러는 일을 수행하기 위해 로컬 버퍼라는시 데이터 저장 공간에 데이터를 보관한다. 그리고 해당 일을 수행하려면 메모리상에 해당 데이터가 올라가야 한다. 하지만 원칙적으로 메모리이 접근이 가능한 것은 CPU밖에 없다. 그래서 입출력 장치의 컨트롤러는 CPU를 할당받기 위해 인터럽트를 건다. CPU는 인터럽트를 받고 로컬버퍼에 있는 데이터를 메모리로 옮기는 연산을 수행해야 한다. 이런 메모리 접근 연산을 모두 CPU가 담당한다면 CPU가 원래하던 업무를 크게 방해받을 것이고 이것은 CPU 사용 효율성 저하로 이어지게 된다. 이러한 비효율을 극복하기 위해 CPU이외 메모리에 접근 가능한 장치를 만들었는데 이것이 DMA(Direct Memory Ac.. OS - 인터럽트 그리고 시스템 콜 주변, I/O장치는 CPU에 직접 접근할 수 없다. CPU도 해당 장치를 직접적으로 관리하는 것이 아니다. 주변 장치를 포함한 I/O장치와 CPU는 인터럽트를 통해 상호 소통한다. (왜 그런고하면... CPU가 너무 바빠서 그렇지 않을까 싶다?) 인터럽트는 주변, I/O장치에 내재된 컨트롤러가 발생시킨다. 주변 , I/O 장치는 컨트롤러 이외에 데이터를 임시로 저장할 수 있는 로컬버퍼라는 것을 가지고 있다. 예를 들어 한 프로그램이 디스크에서 데이터를 읽어오라는 명령을 내리면, 디스크 컨트롤러가 디스크에서 해당 데이터를 읽고 이를 로컬 버퍼에 저장한다. 해당 작업이 끝나면 컨트롤러를 해당 작업이 끝났음을 알리기 위해 인터럽트를 발생시켜 CPU에 해당 작업이 끝났음을 알린다. (아마도 로컬 버퍼에 데이터를.. OS - 운영체제의 자원 관리 기능 운영체제 포스팅은 운영체제를 파편적으로 공부한 비전공자가 제대로 공부하기 위해 정리를 해나가는 과정에 있는 글 입니다.저만의 추측이 포함되어 있는 글이기 때문에 잘못된 부분이 있다면 지적 부탁드립니다. 수정하겠습니다. OS의 핵심 목표는 자원을 효율적으로 관리하는 것이다. 여기서 자원은 하드웨어 자원과 소프트웨어 자원으로 나뉜다. 하드웨어 자원은 다시 CPU, 메모리, 입출력장치, 주변장치로 나뉜다. 이들 각각을 효율적으로 관리하는 방법은 조금씩 다르다. 조금씩 알아보고 세세한 내용은 이후 포스팅에서 정리하려고 한다. 1. CPU 여기서 CPU 관리는 싱글 코어를 가정한다. CPU는 CPU스케쥴링을 통해 관리된다. 목표는 당연히 자원을 효율적으로 사용하는 것이다. 더불어 특정 프로세스가 불이익을 당하지 .. 이전 1 다음