컴퓨터 구조 &운영체제/컴퓨터구조 + 운영체제 14

프로세스와 스레드

1. 프로세스 개요 1) 프로세스 프로세스(process) 실행 중인 프로그램 프로그램은 실행 전까지는 데이터 덩어리, 메모리에 적재되어 실행되는 순간 프로그램은 프로세스가 됨 포그라운드 프로세스(foreground process) 사용자가 보는 앞에서 실행되는 프로세스 백그라운드 프로세스(background process) 사용자가 보지 못하는 뒤에서 실행되는 프로세스 2) 프로세스 제어 블록 프로세스의 실행 모든 프로세스는 실행을 위해 CPU 자원을 필요로 하지만, CPU 자원은 한정되어 있음 프로세스들은 차례대로 돌아가며 한정된 시간만큼만 CPU를 사용 타이머 인터럽트를 통해 종료 타이머 인터럽트: 클럭 신호를 발생시키는 장치에 의해 주기적으로 발생하는 하드웨어 인터럽트 프로세스 제어 블록(PCB;..

운영체제

1. 운영체제 1) 운영체제 운영체제(operating system) 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 프로그램 커널(kernel)에 적재됨자원(resource) 프로그램 실행에 필요한 요소 CPU, 메모리, 보조기억장치, 입출력장치 등과 같은 컴퓨터 부품들이 해당 응용 프로그램(application software) 사용자가 특정 목적을 위해 사용하는 일반적인 프로그램 워드 프로세서, 인터넷 브라우저, 메모장, 게임 등이 해당 운영체제의 역할 지속적인 메모리 자원 관리 각 응용 프로그램들의 메모리 주소가 겹치지 않도록 적당한 공간에 프로그램을 적재 실행할 프로그램을 메모리에 적재, 더 이상 실행되지 않는 프로그램을 메모리에서 삭제 CPU 자원 할당 응용 프로..

입출력장치

1. 장치 컨트롤러와 장치 드라이버 1) 장치 컨트롤러 입출력장치는 CPU, 메모리보다 다루기 더 까다로움 입출력장치의 종류가 너무 많음 일반적으로 CPU, 메모리의 데이터 전송률을 높지만 입출력장치의 데이터 전송률은 낮음 결과적으로 CPU나 메모리와 전송률이 비슷하지 않음 장치 컨트롤러(device controller) 입출력장치가 연결되어 컴퓨터 내부와 정보를 주고 받음 장치 컨트롤러는 하나 이상의 입출력장치와 연결됨 입출력장치를 연결하기 위한 하드웨어 통로 장치 컨트롤러의 역할 CPU와 입출력장치 간의 통신 중개 오류 검출 데이터 버퍼링 CPU와 입출력장치 간의 전송률 차이를 데이터 버퍼링으로 완화 버퍼링(buffering): 전송률이 차이가 나는 장치 간의 데이터를 버퍼(buffer)라는 임시 저..

메모리와 캐시 메모리

1. RAM의 특징과 종류 1) RAM의 특징 RAM 실행할 프로그램의 명령어와 데이터가 저장됨 휘발성 장치로 전원을 종료하면 RAM에 저장된 명령어와 데이터가 삭제됨 전원이 꺼져도 저장된 내용이 유지되는 장치는 비휘발성 장치로 ROM이나 보조기억장치가 해당 비휘발성 저장 장치에는 보관할 대상을 저장 휘발성 저장 장치에는 실행할 대상을 저장 CPU가 실행하려는 프로그램이 보조기억장치에 있다면 이를 RAM으로 복사하여 저장한 뒤 실행 2) RAM의 용량과 성능 RAM 용량이 적다면, 보조기억장치에 있는 실행하려는 프로그램을 RAM으로 복사하기까지 걸리는 시간이 길어짐 RAM의 용량이 크다면 많은 프로그램을 동시에 실행하는 데에 유리 RAM 용량이 커지면 프로그램 실행 속도가 어느 정도 증가하다 일정 수준 ..

CPU 성능 향상 기법

1. 빠른 CPU를 위한 설계 기법 1) 클럭 클럭의 동작 컴퓨터 부품들은 클럭 신호에 맞춰 동작 CPU는 명령어 사이클에 맞춰 명령어를 실행 따라서 클럭 속도가 높은 CPU는 일반석으로 성능이 좋음 클럭 속도 1초에 클럭이 몇 번 반복되는지를 나태나는 시간 단위(Hz) 클럭 속도는 매번 일정하게 유지되지 않음 계속 일정한 클럭 속도를 유지하기 보다는 고성능을 요하는 순간에는 클럭 속도를 높이고, 그렇지 않을 때는 유연하게 클럭 속도를 낮춤 최대 클럭 속도를 강제로 더 끌어올리는 기법을 오버클럭킹(overclocking) 클럭 속도를 높이면 발열문제가 존재 클럭 속도만으로 CPU의 성능을 올리기에는 한계 2) 코어와 멀티코어 코어(core) CPU 내에서 명령어를 실행하는 부품 멀티코어(multi-cor..

CPU의 작동 원리

1. ALU와 제어장치 1) ALU CPU 내부의 계산을 담당 레지스터로부터 피연산자를 받아들이고, 제어장치로부터 제어 신호(수행할 연산)를 받아들여 산술연산, 논리연산 등 다양한 연산을 수행ALU가 연산을 수행한 결과는 바로 메모리에 저장되지 않고 일시적으로 레지스터에 저장됨 ALU가 연산할 때마다 CPU가 메모리에 접근하게 되면 프로그램의 실행 속도가 늦어짐 레지스터에 일시적으로 저장하여 접근 속도를 향상시켜 프로그램의 속도를 향상 플래그는 연산 결과에 대한 추가적인 상태 정보를 의미하며 플래그 레지스터에 저장됨 CPU가 프로그램을 실행하는 도중 반드시 기억해야 하는 일종의 참고 정보 플래그 종류 의미 부호 플래그 연산한 결과의 부호를 나타냄 제로 플래그 연산 결과가 0인지 여부를 나타냄 캐리 플래그..

명령어

1. 소스코드와 명령어 1) 명령어 컴퓨터는 명령어를 처리하는 기계 명령어는 컴퓨터를 실질적으로 작동시키는 매우 중요한 정보 개발자가 C++, Python과 같은 프로그래밍 언어로 작성한 소스코드는 컴퓨터 내부에서 명령어로 변환됨 2) 고급 언어와 저급 언어 고급 언어(high-level programming language) 사람이 이해하고 작성하기 쉽게 만들어진 언어 저급 언어(low-level programming language) 컴퓨터가 직접 이해하고 실행할 수 있는 언어 저급 언어에는 기계어와 어셈블리어가 존재 기계어(machine code) 0과 1의 명령어 비트로 이루어진 언어 사람이 읽으면 의미를 이해하기 어려움 → 어셈블리어의 등장 어셈블리어(assembly language) 기계어를 ..

데이터

1. 0과 1로 숫자를 표현하는 방법 1) 정보 단위 비트(bit) 0과 1을 나타내는 가장 작은 정보 단위 1 비트는 0 또는 1, 두 가지 정보를 표현 2 비트 - 4 가지 정보(00,01,10,11) 3 비트 - 8가지 정보(000,001,010,100,011,101,110,111) 따라서 n 비트는 2^n 가지 정보를 표현 바이트(byte) 8개의 비트를 묶은 단위로 비트보다 한 단계 큰 단위 2^8(256)개의 정보를 표현 가능 2) 이진법 이진법(binary) 0과 1만으로 모든 숫자를 표현하는 방법 숫자가 1을 넘어가는 시점에서 자리 올림 이진수의 음수 표현 마이너스 부호(-)를 붙이면 컴퓨터는 이해할 수가 없음 0과 1만으로 음수를 표현하는 방법 중 많이 사용되는 방법은 2의 보수(two'..

CPU Scheduling

1. CPU Scheduling 다중 프로그래밍을 가능하게 하는 운영체제의 동작 기법 운영체제는 프로세스들에게 CPU를 적절히 배정함으로써 시스템의 성능을 개선 Ready Queue에 있는 프로세스를 대상으로 CPU를 할당하는 순서와 방식을 결정 2. 스케줄링 유형 비선점형 스케줄링(Non-Preemptive) 프로세스 종료 또는 입출력 등의 이벤트 발생 시까지 실행을 보장 모든 프로세스에 공정 응답 시간 예측 가능 짧은 수행시간을 가진 프로세스라도 순서를 기다려야 작업 가능 선점형 스케줄링(Preemptive) OS가 CPU의 사용권을 선점할 수 있는 경우에 강제로 회수 높은 우선 순위를 가진 프로세스를 빠르게 처리하려는 시스템에 유용 빠른 응답 시간을 요구하는 시분할 시스템에 유용 높은 우선 순위를 ..

프로세스

1.프로세스(Process) 실행 중인 프로그램을 의미 프로그램 저장공간에 저장되어 있는 코드와 리소스 등이 집합되어 있는 파일을 의미 프로그램이 메모리에 올라가서 프로세스로 동작 프로세스는 프로그램이 실행되면 점유시간, 메모리, 파일, 입출력 장치 등의 자원을 할당 2. 프로세스의 메모리 구조 스택 영역 데이터를 일시적으로 저장하는 영역 스택 포인터와 힙 포인터가 만나면 메모리가 소진되었음을 의미 지역변수, 매개변수 등이 존재 힙 영역 코드 영역과 별도로 유지되는 자유 영역 malloc(), new()와 같은 동적 메모리 할당, 해제와 관련 데이터 영역 프로그램의 가상 주소 공간 전역 변수, 정적 변수를 저장하거나 할당하며 실행 전에 초기화 코드 영역 프로그램 명령이 위치하는 곳 기계어로 제어되는 메모..