Computer Science/Operating System

    프로세스 생성

    프로세스 생성 프로세스는 실행 중인 프로그램으로, 프로그램을 실행하기 위해서는 디스크 상에 존재하는 프로그램을 메모리에 탑재해야 한다. 과정 1. 운영체제는코드와 정적 데이터를 메모리로 탑재한다. 프로그램은 디스크에 특정 실행 파일 형식으로 존재하는데, 코드와 정적 데이터를 메모리에 탑재하기 위해서 운영체제는 디스크의 해당 바이트를 읽어서 메모리의 어딘가에 저장한다. 초기 운영체제들은 프로그램 실행 전에 코드와 데이터를 모두 메모리에 탑재하였으나, 현대의 운영체제는 프로그램을 실행하면서 코드나 데이터가 필요할 때 필요한 부분만 메모리에 탑재한다. 2. 스택과 힙을 생성하고 초기화한다. 코드와 정적 데이터가 메모리로 탑재된 후, 프로세스를 실행시키기 전에 운영체제는 일정량의 메모리를 프로그램의 의 스택 용..

    CPU 스케줄링

    스케줄링 스케줄링은 여러 프로세스의 상황을 고려하여 CPU와 시스템 자원을 어떻게 배정할지 결정하는 일을 말한다. CPU 스케줄링은 규모에 따라 고수준, 중간, 저수준 스케줄링으로 구분할 수 있다. 고수준 스케줄링 어떤 작업을 시스템이 받아들일지 거부할지를 결정하는 단계로, 작업 요청이 오면 스케줄러가 시스템의 상황을 고려하여 승인 여부를 결정한다. 고수준 스케줄링에 따라 시스템 내에서 동시에 실행 가능한 프로세스의 수가 정해지기 때문에, 고수준 스케줄링은 멀티 프로그래밍 정도를 제어하는 역할을 한다. 중간 수준 스케줄링 고수준 스케줄링이 프로세스를 활성화할지 말지를 결정하여 전체 프로세스의 수를 조절하더라도, 프로세스가 활성화 된 후에 여러가지 사정으로 시스템에 과부하가 걸릴 수 있다. 중간 수준 스케..

    프로세스 제어 블록과 문맥교환

    프로세스 제어 블록 특정 프로세스에 대한 중요한 정보를 저장하고 있는 자료구조로, 모든 프로세스는 고유의 프로세스 제어 블록을 가진다. 프로세스 제어 블록은 프로세스 생성 시 만들어져서 프로세스가 실행을 완료하면 폐기된다. 프로세스는 CPU를 할당받아 작업을 처리하다가 프로세스 전환이 발생하면 진행하던 작업을 저장하고 CPU를 반환한다. 이때 작업의 진행 상황을 프로세스 제어 블록에 저장하고 다시 CPU를 할당받게 되면 저장된 내용을 불러와 이전에 종료했던 시점부터 작업을 다시 수행한다. 프로세스의 상태 생성 상태 프로그램을 메모리에 가져와 실행 준비가 완료된 상태 준비 상태 실행을 기다리는 모든 프로세스가 자기 차례를 기다리는 상태로, CPU 스케줄러가 실행될 프로세스를 선택한다. 실행 상태 선택된 프..

    프로세스와 스레드

    프로세스 운영체제로부터 시스템 자원을 할당받는 작업의 단위로, 실행을 위해 메모리로 올라온 프로그램 프로세스는 각각의 독립된 메모리 영역을 할당받고, 별도의 주소 공간에서 실행된다. 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없으며, 다른 프로세스의 자원에 접근하려면 프로세스 간 통신을 이용해야 한다. 메모리 구조 코드 영역 - 프로그램의 코드가 저장되는 곳으로, 텍스트 영역이라고도 한다. - 프로그래머가 작성한 프로그램은 코드 영역에 탑재되며, 읽기 전용으로 처리된다. 데이터 영역 - 코드가 실행하면서 사용하는 변수나 파일 등 각종 데이터를 저장한다. - 데이터는 변하는 값이기 때문에 기본적으로 읽기와 쓰기 모두 가능하다. 스택 영역 - 함수의 호출과 함께 할당되며, 함수의 호출이 완료..

    병렬 처리

    병렬 처리 병렬 처리는 동시에 여러 개의 명령을 처리하여 작업의 능률을 올리는 방법으로, CPU의 핵심 기능을 가진 코어를 여러 개 만들거나 동시에 실행 가능한 명령의 개수를 늘리는 방식을 이용한다. 병렬 처리에서 작업을 N개로 쪼갰을 때 N을 병렬 처리의 깊이라고 한다. 예를 들어 병렬 처리의 깊이가 4인 경우는 작업을 네 단계로 나눈 것으로 동시에 처리할 수 있는 작업의 개수가 최대 4개이다. 따라서 병렬 처리의 깊이 N은 동시에 처리할 수 있는 작업의 개수를 의미한다. 이론적으로는 N이 커질수록 동시에 작업할 수 있는 작업의 개수가 많아져서 성능이 높아지지만, 작업을 너무 많이 나누면 각 단계마다 작업을 이동하고 새로운 작업을 불러오는데 시간이 너무 많이 걸려서 오히려 성능이 떨어진다. 이러한 오버..

    컴퓨터 성능 향상 기술

    현대 컴퓨터 구조 현대 컴퓨터 구조에서 메인보드 내 메모리와 주변장치는 시스템 버스로 연결되어 있고, CPU 내 레지스터, 연산장치, 제어장치는 CPU 내부 버스로 연결되어 있다. 즉, 메모리의 속도는 시스템 버스의 속도와 같고, CPU의 속도는 CPU 내부 버스의 속도와 같다. 따라서 CPU 내부 버스의 속도가 시스템 버스의 속도보다 빠르기 때문에, 메모리를 비롯한 주변장치의 속도가 CPU의 속도를 따라가지 못하는 문제가 발생한다. 버퍼와 스풀러 버퍼는 속도에 차이가 있는 두 장치 사이에서 그 차이를 완화하는 역할을 하는 장치로, 일정량의 데이터를 모아 롬김으로써 속도의 차이를 완화한다. 스풀은 CPU와 입출력장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼로, 대표적인 예로 프린터에 사용되는 스..

    컴퓨터 구조

    하드웨어 구성 컴퓨터는 중앙처리장치, 메인메모리, 입력장치, 출력장치, 저장장치로 구성된다. 컴퓨터로 하는 작업은 대부분 중앙처리장치와 메인메모리의 협업으로 이루어지기 때문에, 중앙처리장치와 메인메모리는 필수 장치로 분류되고, 그 외의 부품은 주변장치라고 한다. 메인메모리는 전력이 끊기면 데이터를 잃어버리기 때문에 데이터를 영구 보관하려면 하드디스크나 USB를 사용해야 하며 메인메모리를 주기억장치, 하드디스크나 USB 같은 메모리를 보조저장장치라고 부른다. CPU CPU는 명령어를 해석하여 실행하는 장치로 산술논리 연산장치, 제어장치, 레지스터로 구성된다. 산술논리 연산장치 데이터를 연산하는 곳으로 데이터의 덧셈, 뺄셈, 곱셈, 나눗셈 같은 산술 연산과 AND, OR 같은 논리 연산을 수행한다. 제어장치..

    운영체제 개요

    운영체제란? 운영체제는 사용자에게 편리한 인터페이스 환경을 제공하고, 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어를 말한다. 즉, 운영체제는 각각의 응용 프로그램이 활동할 수 있는 환경을 제공하고, 응용 프로그램이 필요로 하는 컴퓨터 자원을 나누어주며, 응용 프로그램으로부터 컴퓨터 자원을 보호하는 역할을 한다. 운영체제는 응용 프로그램이나 사용자에게 컴퓨터 자원을 사용할 수 있는 인터페이스를 제공하는데, 이를 통해 응용 프로그램이나 사용자에게 모든 컴퓨터 자원을 숨기고 정해진 방법으로만 컴퓨터 자원을 사용하도록 제한한다. 인터페이스 하드웨어 인터페이스 운영체제는 CPU, 메모리, 키보드, 마우스와 같은 다양한 하드웨어를 일관된 방법으로 사용할 수 있도록 해주는 하드웨어 인터페이스를 제공한다. 하..