728x90

프로그래밍/컴퓨터구조 및 운영체제 38

CPU 스케쥴링 개념

* 혼자공부하는 컴퓨터구조 운영체제를 공부하며 정리하였습니다. CPU 스케줄링이란 - 운영체제가 프로세스들에게 공정하고 합리적으로 CPU자원을 배분하는것, 컴퓨터 전체 성능과도 직결되는 문제이다. 공정한 스케줄링을 위하여 - 단순히 들어온 순서대로 처리를 하는 방식은 좋은 방식이 아니다. - 빨리 처리해야되는 프로세스도 있는 반면 비교적 CPU를 적게 써도 되는 프로세스도 있다. - 입출력 작업이 많은 프로세스의 우선순위는 CPU 작업이 많은 프로세스의 우선순위보다 높다. (입출력 작업이 많은 프로세스는 CPU를 안쓰는 대기시간이 더 많기 때문이다.) 프로세스 우선순위 - 상황에 맞게, 프로세스의 중요도에 맞게 운영체제가 부여하는것이다. - PCB에 저장이 된다. 스케줄링 큐 - 운영체제 입장에서는 모든..

스레드 알아보기

* 혼자공부하는 컴퓨터구조 운영체제를 공부하며 정리한 내용입니다. 실무에서 스레드를 고려하며 코딩하는 경우가 아주 많다. Thread는 프로세스를 구성하는 실행 흐름의 단위이다. 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다. (한 프로세스를 여러 개의 스레드로 동시에 실행할 수 있다.) 실행 흐름이 여러개인 프로세스를 멀티 스레드 프로세스라고 한다. -> 프로세스를 이루는 여러 명령어 동시 실행 가능 스레드는 무엇으로 구성되어 있길래 나누어서 실행할 수 있을까 스레드의 구성요소 - 하나의 스레드마다 각기 다른 스레드 ID - 프로그램 카운터를 비롯한 레지스터 값 - 스택 중요요소 - 프로세스를 이루는 스레드들은 실행에 필요한 최소한의 정보를 갖고있는데 - 하지만 프로세스를 이루는 스레드들은 프로..

프로세스 상태, 계층 구조, 생성 기법

프로세스 상태 1. 생성 상태 - 이제 막 메모리에 적재되어 PCB를 할당 받은 상태 2. 준비 상태 - 당장이라도 CPU를 할당 받아 실행할 수 있지만 자신의 차례가 아니기 때문에 기다리는 상태이다. - 자신의 차례가 오면 실행 상태로 변환된다. (디스패치) 3. 실행 상태 - CPU를 할당 받아 실행중인 상태이다. - 할당된 시간 모두 사용 시(타이머 인터럽트 발생 시) 준비상태로 변환된다. - 실행 도중 입출력장치를 사용하면 입출력 작업이 끝날 때(입출력 완료 인터럽트 발생시)까지 대기상태로 변환된다. 4. 대기 상태 - 프로세스가 실행 도중 입출력장치를 사용하는 경우 - 입출력 작업은 CPU에 비해 느리기 때문에 대기상태로 기다린다. 5. 종료 상태 - 프로세스가 종료된 상태이다. - PCB, 프..

프로세스 개요

프로그램은 실행되기 전까지는 단순히 보조기억장치에 저장되어있는 데이터 덩어리일 뿐이지만 이 보조기억장치에 저장된 프로그램을 실행하여 메모리에 적재하는 순간 프로세스가 된다. 큰 종류 2가지 1. Foreground process - 사용자가 볼 수 있는 공간에서 실행되는 프로세스 - 일반적인 웹브라우저, 메모장, 워드프로세스, 게임 등 2. Background process - 사용자가 볼 수 없는 공간에서 실행되는 프로세스 - 직접 상호작용은 가능한 백그라운드 프로세스 (데몬, 서비스) - 상호작용은 하지 않고 그저 정해진 일만 수행하는 프로세스 프로세스 제어 블록 1) 모든 프로세스는 실행을 위해 CPU가 필요하다. 그러나 CPU자원은 한정 되어있다. 2) 따라서 프로세스들은 돌아가며 한정된 시간 만..

운영체제 핵심 서비스 3가지(프로세스관리, 자원접근할당, 파일시스템)

1. 프로세스 관리 2. 자원 접근 및 할당 3. 파일 시스템 관리 프로세스 관리 - 프로세스 == 실행중인 프로그램이다. - 수많은 프로세스들이 동시에 실행되고 있다. (아주 빠르게 번갈아가며) - 운영체제는 여러 프로세스를 관리해준다. - 페이징, 스와핑 == 모든 프로세스를 메모리에 올려놓지 않는 것 - 어떻게 일목요연하게 관리할 수 있을까? - 프로세스와 스레드, 프로세스 동기화, 교착상태 해결 등 자원 접근 및 할당 - CPU (CPU 스케줄링 : 어떤 프로세스를 먼저, 얼마나 오래 실행할지를 결정하는것) - 모든 프로세스는 실행되기 위해 CPU가 필요 - CPU 스케줄링을 통해 공평하게 할당한다. - 메모리 (페이징 , 스와핑) - 새로운 프로세스를 적재할 때 비어있는 주소공간에 적재를 해야한..

운영체제 큰 그림

운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나이다. Windows / Android / Mac OS / IOS / Linux 등이 있다. 운영체제의 기능은 다양하지만 가장 핵심적인 서비스는 자원에 접근하고 조작하는 기능과 프로그램이 올바르고 안전하게 실행되는 기능들을 이야기한다. 이런 운영체제의 핵심 서비스를 담당하는 것이 커널(kernel)이다. ** 운영체제에는 속하지만 커널에는 속하지 않는 기능 - 그래픽 유저 인터페이스 - 커멘드 라인 인터페이스 이렇게 크게 두가지 있다. -> 사용자와 컴퓨터 간의 통로일 뿐 운영체제의 핵심 기능(커널)은 아니다. 이중모드와 시스템 호출 운영체제는 응용프로그램들이 자원(CPU, 메모리, SSD, HDD등)에 접근하려고 할때 오직 자신을 통해서만..

운영체제를 알아야 하는 이유

모든 프로그램은 실행을 위해 자원(프로그램 실행에 있어 필요한 요소를 말한다, 컴퓨터의 네가지 핵심 부품 등)을 필요로 한다. 운영체제는 실행할 프로그램에 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 프로그램이다. 운영체제는 메모리에 적재되는 영역이 정해져있다. 이를 커널 영역이라고 한다. [운영체제의 메모리 관리의 일부] 만약, 메모장이나 인터넷 등을 실행한다면 운영체제가 메모리의 비어있는 적당한 공간에 해당 응용프로그램을 적재하여 실행하게 해준다. 사용하지 않는 프로그램이 있다면 그 프로그램은 메모리에서 삭제하고 깨끗하게 비워주기도 한다. [운영체제의 CPU관리] 운영체제는 메모리 뿐만이 아니라 CPU도 관리를 해준다. 우리가 인지하지 못할정도로 응용프로그램들은 빠르게 번갈아가며 실행되..

다양한 입출력 방법

* 혼자공부하는 컴퓨터구조 운영체제를 공부하며 정리해였습니다. 세가지 입출력 방식 - 프로그램 입출력 - 인터럽트 기반 입출력 - DMA 입출력 1. 프로그램 입출력 - 입출력장치에 연결된 장치 컨트롤러를 프로그램속 명령어로 제어하는 방법이다. 메모리에 저장된 정보를 하드 디스크에 백업하는 과정을 생각해보자 (== 하드디스크에 새로운 정보 쓰기) 1. CPU는 하드 디스크 컨트롤러의 제어 레지스터에 쓰기 명령 내보내기 2. 하드 디스크 컨트롤러는 하드 디스크 상태 확인 -> 상태 레지스터에 준비 완료 표시 3-1 CPU는 상태 레지스터를 주기적으로 읽어보며 정보를 데이터 레지스터에 쓴다. 3-2 하드 디스크가 준비되었다면 백업할 메모리의 정보를 데이터 레지스터에 쓴다. ** 아직 백업작업(쓰기 작업)이 ..

장치 컨트롤러와 장치 드라이버

* 혼자공부하는 컴퓨터구조 운영체제 책을 통해 공부한 내용입니다. 자세한 내용은 책을 참조바랍니다. 1. 입출력 장치와 보조기억장치는 컴퓨터 내부와 어떻게 소통하는것일까? 2. 입출력장치는 CPU, 메모리 보다 다루기가 더 까다롭다 - 입출력장치에는 종류가 너무 많다. -> 종류가 너무 많기 때문에 장치마다 속도, 데이터 전송 형식 등이 다양하다. - 일반적으로 CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다. -> 전송률(transfer rate)란 데이터를 얼마나 빨리 교환할 수 있는지를 나타낸다. 장치 컨트롤러 위와 같은 이유 입출력장치의 다양성, 전송률의 속도차이 때문에 입출력장치는 장치 컨트롤러를 통해 컴퓨터와 연결된다. 입출력 제어기(I/O controller), 입..

RAID의 정의와 종류

* 혼자공부하는 컴퓨터구조 운영체제 책을 공부하며 정리하였습니다. * 1TB 하드디스크 네 개로 RAID를 구성하면 4TB 하드 디스크 한 개의 성능과 안전성을 능가할 수 있다. * 각 RAID마다 장단점이 있으므로 각 RAID 레벨의 구성과 특징을 아는것이 중요합니다. - 무엇을 원하는지에 따라 최적의 RAID레벨이 달라진다. * 데이터의 안정성 및 성능을 위한 방법으로 RAID만 있는것은 아니지만 RAID는 대표적인 방법입니다. RAID의 정의 - Redundant Array of Independent Disks - 하드디스크와 SSD로 사용하는 기술이다. - 데이터의 안전성 혹은 높은 성능을 위해 여러 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술 RAID 레벨 - RAID..

728x90