본문 바로가기

CS/운영체제

(7)
CPU 스케쥴링 알고리즘 Re 비선점형 방식비선점형 방식(non-preemptive)은 프로세스가 스스로 CPU 소유권을 포기하는 방식이며,강제로 프로세스를 중지하지 않는다. 따라서 컨텍스트 스위칭으로 인한 부하가 적다. FCFS(First Come, First Saved)가장 먼저 온 것을 가장 먼저 처리하는 알고리즘이다. 길게 수행되는 프로세스 때문에 '준비 큐에서오래 기다리는 현상(convoy effect)가 발생하는 단점이 있다. SJF(Shortest Job First) 실행 시간이 가장 짧은 프로세스를 가장 먼저 실행하는 알고리즘이다.긴 시간을 가진 프로세스가 실행되지 않는 형상이 일어나며 평균 대기 시간이 가장 짧다.실제로는 실행 시간을 알 수 없기 때문에 과거의 실행했던 시간을 토대로 추측해서 사용한다. 우선순위기존 S..
교착상태(deadlock) Re 운영체제를 배우면서 교착상태를 알게 됐다. 그런데 DB도 데드락 생각났다. DB데드락 관련도 알아보자. 정의 : 교착 상태는 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태를 말한다.  이미지를 보면 예시를 알 수 있다.게임이 서로의 자원을 요청할 때 서로의 자원을 공유함으로써 서로 대기하는 상태인 것이다.그렇다면 원인은 무엇일까 원인● 상호 배제 : 한 프로세스가 자원을 독점하고 있으며 다른 프로세들은 접근이 불가능하다.● 점유 대기 : 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태● 비선점 : 다른 프로세스의 자원을 강제적으로 가져올 수 없다.● 환형 대기 : 이게 앞서 말한 서로의 자원을 요구하는 상황이다. 해결 방법1) 자원을 할당할 때 애초에 조건이 성립되지 않..
메모리 관리(Memory management) Re 가상 메모리가상 메모리(virtual memory)는 메모리 관리 기법의 하나로 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여이를 사용하는 사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말한다. 가상 주소는 메모리관리장치(MMU)에 의해 실제 주소로 변환된다. 가상 메모리는 가상 주소와 실제 주소가 매핑되어 있고 프로세스의 주소 정보가 들어있는 '페이지 테이블'로 관리된다. 이 때 속도 향상을 위해 TLB를 쓴다. ※ TLB (translation look a side Buffer) : 메모리와 CPU 사이에 있는 주소 변환을 위한 캐시이다. 페이지테이블에 있는 리스트를 보관하며 CPU가 페이지 테이블까지 가지 않도록 해 속도를 향상시킬 수 있는캐시 계층이다. ● 스와핑(swapping)가상 ..
메모리(Memory) Re 메모리에 관한 설명은 우선 그림을 보겠다. ● 레지스터 : CPU안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 기억 용량이 가장 적다.● 캐시 : L1, L2, L3 캐시를 지칭합니다. 휘발성, 속도 빠름, 기억 용량이 적다.● 주기억장치 : RAM을 가리킨다. 휘발성, 속도 보통, 기억 용량이 보통이다.● 보조기억장치 : HDD, SSD를 일컬으며 비휘발성, 속도 낮음, 기억 용량이 많다.  - 램(주기억장치)은 하드디스크(보조기억장치)로부터 일정량의 데이터를 복사한 후 임시 저장해서 이를필요 시마다 빠르게 전달하는 역할을 한다. 알아두어야 할 것이 메모리의 계층을 나타내기 때문인거 것이지 캐시와 레지스터는 메모리 사이 사이에존재할 수도 있다.  - 캐시는 데이터를 미리 복사해 놓는 임시 저장소이..
CPU(Central Processing Unit) Re 정의 : 산술논리연산장치, 제어장치, 레지스터로 구성되어 있는 컴퓨터 장치를 말한다. 메모리에 존재하는          명령어를 해석해서 실제로 실행하는 역할을 한다. ● 제어장치(CU, Control Unit)제어장치는 프로세스 조작을 시도하는 CPU의 부품이다. 입출력장치 간 통신을 제어하고 명령어들을 읽고해석하며 데이터 처리를 위한 순서를 결정한다. ● 레지스터(Register)레지스터는 CPU안에 있는 매우 빠른 임시기억장치이다. CPU와 직접 연결되어 있으므로 연산 속도가메모리보다 수십 배에서 수백배까지 빠르다. CPU는 자체적으로 데이터를 저장할 수 없기 때문에 레지스터를거쳐 데이터를 전달한다.→ CPU는 단순히 메모리에 있는 것을 실행하는 역할만 한다 ● 산술논리연산장치(ALU, Arithm..
운영체제의 역할과 구조 Re 운영체제의 정의 : 하드웨어와 소프트웨어(유저 프로그램을)를 효율적으로 관리하는 역할을 한다. 운영체제의 역할● CPU 스케줄링과 프로세스 관리 : CPU소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제,자원 할당 및 반환을 관리 ● 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리 ● 디스크 파일 관리 : 디스크 파일을 어떠한 방법으로 보관할지 관리 ● I/O 디바이스 관리 : I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리한다.  시스템콜 시스템콜이란 운영체제가 커널에 접근하기 위한 인터페이스이며 유저 프로그램이 운영체제의서비스를 받기 위해 커널 함수를 호출할 때 쓴다. 유저 프로그램이 I/O 요청으로 트랩(trap)을 발동하면올바른 ..
[ 프로세스 ] Re 프로세스는 프로그램이 메모리에 올라가 인스턴스화된 것을 말한다.  1) 프로세스와 컴파일 과정 프로그램의 컴파일 과정은 다음과 같다. 전처리 소스 코드의 주석을 제거하고 #include 등 헤더 파일을 병합하여 매크로를 치환한다. 컴파일러오류 처리, 코드 최적화 작업을 하며 어셈블리어로 변환합니다. ※ Java의 경우는 JVM에서 실행되므로 어셈블리어로 변환이 안된다.    → Java의 장점 어셈 블러어셈블리어는 목적 코드(object code)로 변환된다. 이 때 확장자는 운영체제마다 다르다.→ Linux에서는 [ .o ]가 되고 Windows에서는 [ .c ]가 된다. 링커프로그램 내에 있는 라이브러리 함수 또는 다른 파일들과 목적 코드를 결합하여 실행 파일을 만든다.실행 파일의 확장자는 .exe ..