분류 전체보기(1084)
-
OS
2019.02.09
2
[OS] 교착상태란 무엇인가?
교착상태란? 교착상태(Dead Lock)은 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 의미합니다. 아래 그림과 같이 자동차(프로세스)들이 현재 위치한 길(자원)을 점유함과 동시에 다른 차가 사용하는 길을 사용하려고 대기하고 있지만 다른 길을 사용할 수 없으며 현재 길에서도 벗어나지 못하는 상태입니다. 교착상태 발생의 필요 충분 조건 교착상태가 발생하기 위해서는 다음의 네가지 조건이 충족되어야 하는데, 이 네가지 조건중 하나라도 충족되지 않으면 교착상태가 발생하지 않습니다. 상호배제(Mutual Exclusion) 한번에 한개의 프로세스만이 공유 자원을 사용할 수 있어야 합니다. 점유와 대..
-
OS
2019.02.08
[OS] 여러가지 프로세서 운영기법들
병행 프로세스 병행 프로세스는 두개이상의 프로세스들이 동시에 존재하며 실행 상태에 있는 것을 의미합니다. 1. 여러 프로세스들이독립적으로 실행되는 것을 독립적 병행 프로세스, 서로 협력하며 동시에 실행되는 것을 협동적 병행 프로세스라고 합니다. 2. 병행 프로세스는 다중 처리 시스템이나 분산 처리 시스템에서 중요한 개념으로 사용됩니다. 임계 구역 임계구역은 다중 프로그래밍 운영체제에서 여러개의 프로세스가 공유하는 데이터 및 자원에 대하여 어느 한 시점에서는 하나의 프로세스만 자원 또는 데이터를 사용하도록 지정된 공유 자원을 의미합니다. 1. 임계구역에는 하나의 프로세스만 접근할 수 있으며, 해당 프로세스가 자원을 반납한 후에만 다른 프로세스가 자원이나 데이터를 사용할 수 있습니다. 2. 임계 구역은 특정..
-
OS
2019.02.07
1
[OS] 운영체제 스케줄링이란 무엇인가?
스케줄링이란? 1. 스케줄링은 프로세스가 생성되어 실행될때 필요한 시스템의 여러자원을 해당 프로세스에게 할당하는 작업을 의미합니다. 2. 프로세스가 생성되어 완료될때까지 프로세스는 여러 종류의 스케줄링 과정을 거치게 됩니다. 3. 스케줄링의 종류에는 장기 스케줄링, 중기 스케줄링, 단기 스케줄링이 있습니다. 장기 스케줄링 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업을 의미합니다. 작업 스케줄링, 상위 스케줄링이라고도 하며, 작업 스케줄러에 의해 수행됩니다. 중기 스케줄링 어떤 프로세스들이 CPU를 할당 받을 것인지 결정하는 작업을 의미합니다. CPU를 할당받으려는 프로세스가 많을 경우 프로세스를 일시 보류시킨 후 활성화해서 일시적으로 부하를 조절합니다..
-
OS
2019.02.06
[OS] PCB란 무엇인가?
PCB란? PCB(프로세스 제어블록)는 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳으로 Task Control Block 또는 Job Control Block이라고도 합니다. 각 프로세스가 생성될 때마다 고유의 PCB가 생성되며 프로세스가 완료되면 PCB는 제거됩니다. PCB에 저장되어 있는 정보 저장정보 설명 프로세스의 현재 상태 준비, 대기, 실행 등의 프로세스 상태 포인터 부모 프로세스에 대한 포인터 : 부모 프로세스의 주소 기억 자식 프로세스에 대한 포인터 : 자식 프로세스의 주소 기억 프로세스가 위치한 메모리에 대한 포인터 : 현재 프로세스가 위치한 주소 기억 할당된 자원에 대한 포인터 : 프로세스에 할당된 각 자원에 대한 주소 기억 프로세스 고유 식별자 프로세스를 구분할 수 있는 ..
-
OS
2019.02.05
[OS] 프로세스란 무엇인가?
프로세스란? 프로세스는 일반적으로 CPU에 의해 처리되는 사용자 프로그램, 시스템 프로그램 즉 실행중인 프로그램을 의미하며, 작업(Job) 태스크(Task)라고도 합니다. 프로세스는 다음과 같이 여러 형태로 정의할 수 있습니다. 1. PCB를 가진 프로그램 2. 실기억장치에 저장된 프로그램 3. 프로세서가 할당되는 실체로서, 디스패치가 가능한 단위 4. 프로시저가 활동중인 것 5. 비동기적 행위를 일으키는 주체 6. 지정된 결과를 얻기 위한 일련의 계통적 동작 7. 목적 또는 결과에 따라 발생되는 사건들의 과정 8. 운영체제가 관리하는 실행 단위 ※ 프로시저란? 한 프로그램은 여러개의 작은 프로그램으로 분할될 수 있는데 이떄 분할된 작은 프로그램을 의미하며, 부 프로그램이라고도 합니다. 프로세스 상태 전..
-
OS
2019.02.03
[OS] 링커와 로더란 무엇인가?
절대로더 링커(연결 편집기) 링커는 언어 번역 프로그램이 생성한 목적 프로그램들과 라이브러리 또 다른 실행 프로그램등을 연결하여 실행 가능한 로드 모듈을 만드는 시스템 소프트웨어이며 연결 편집기라고도 합니다. 링커는 연결 기능만 수행하는 로더의 한 형태로, 링커에 의해 수행되는 작업을 링킹이라고 합니다. 로더란 무엇인가? 로더는 컴퓨터 내부로 정보를 들여오거나 로드 모듈을 디스크 등의 보조기억장치로 부터 주 기억장치에 적재하는 시스템 소프트웨어 입니다. 로더의 기능 1. 할당 : 실행 프로그램을 실행시키기 위해 기억장치 내에 옮겨놓을 공간을 확보하는 기능 2. 연결 : 부 프로그램 호출 시 그 부 프로그램이 할당된 기억장소의 시작주소를 호출한 부분에 등록하여 연결하는 기능 3. 재배치 : 디스크등의 보조..
-
ETC.
2019.02.02
1
[기타] 매크로 프로그래밍에 대해서
매크로 프로그래밍의 개념 및 특징 매크로(Macro)는 프로그램 작성 시 한 프로그램 내에서 동일한 코드가 반복 될 경우 반복되는 코드를 한번만 작성하여 특정 이름으로 정의한 후 그 코드가 필요할 때마다 정의된 이름을 호출하여 사용하는 기법입니다. 1. 일종의 부 프로그램(Sub-Program)으로 개방 서브루틴(Poened Sub-routine)이라고도 합니다. 2. 매크로는 문자열 바꾸기와 같이 매크로 이름이 호출되면 호출된 횟수만큼 정의된 매크로 코드가 해당 위치에 삽입되어 실행됩니다. 3. 매크로 정의 내에 또 다른 매크로를 정의할 수 있습니다. 4. 사용자의 반복적인 코드 입력을 줄여줍니다. 5. 매크로 정의형태는 주로 어셈블리어 형태입니다. 매크로 용어 매크로 정의 : 프로그래머가 일정한 형식..
-
Languague/Assembly
2019.02.01
1
[Assembly] 어셈블리어란 무엇인가?
어셈블리어란? 어셈블리어란 사용자가 이해하기 어려운 기계어 대신에 명령 기능을 쉽게 연상할 수 있는 기호를 기계어와 1:1로 대응시켜 코드화한 기호 언어입니다. 1. 어셈블리어로 작성한 원시 프로그램은 어셈블러를 통해 목적 프로그램(기계어)로 어셈블 하는 과정을 거쳐야 합니다. 2. 사용자가 프로그램을 쉽게 읽고 이해할 수 있습니다. 3. 프로그램에 기호화된 명령 및 주소를 사용합니다. 4. 어셈블리어의 기본 동작은 동일하지만 작성 CPU마다 사용되는 어셈블리어가 다를 수 있습니다. 5. 어셈블리어에서 사용되는 명령은 의사 명령과 실행 명령으로 구분할 수 있습니다. 컴파일 vs 어셈블 고급언어로 작성한 원시 프로그램을 컴파일러가 기계어로 번역하는 작업을 컴파일(Complie)한다고 하고 어셈블리어로 작성..
-
Languague
2019.01.31
[Language] 컴파일러와 인터프리터란 무엇인가?
컴파일러와 인터프리터는 고급언어로 작성된 원시 프로그램(Source Program)을 목적 프로그램(Object Program)으로 번역하는 번역 프로그램이며, 프로그램 번역 방식에 따라 구분됩니다. ※ 원시프로그램 고급언어나 어셈블리어로 작성된 프로그램 컴파일러 1. 컴파일러는 고급 언어로 작성된 프로그램 전체를 목적 프로그램으로 번역한 후, 링킹 작업을 통해 컴퓨터에서 실행 가능한 실행 프로그램을 생성합니다. 2. 번역 실행 과정을 거쳐야 하기 때문에 번역 과정이 번거롭고 번역 시간이 오래 걸리지만, 한번 번역한 후에는 다시 번역하지 않으므로 실행 속도가 빠릅니다. 3. 컴파일러를 사용하는 언어에는 C언어 Java 등이있습니다. 인터프리터 1. 인터프리터는 고급 언어로 작성된 프로그램을 한 줄 단위로..
-
Languague
2019.01.30
[Language] 프로그래밍 언어란 무엇인가?
프로그래밍 언어란? 프로그래밍 언어는 컴퓨터를 이용하여 특정 문제를 해결하기 위한 프로그램을 작성하기 위해 사용되는 언어입니다. 프로그래밍 언어는 일반적으로 저급언어(기계어, 어셈블리어)와 고급 언어(컴파일러 언어) 로 분류할 수 있습니다. 저급 언어 저급언어(Low Level Language)는 기계어와 어셈블리어로 구분됩니다. 기계어 컴퓨터가 직접 이해할 수 있는 언어입니다. 0과 1의 2진수 형태로 표현되며 수행시간이 빠릅니다. CPU에 내장된 명령들을 직접 사용하는 것으로, 프로그램을 작성하고 이해하기가 어렵습니다. 기종마다 기계어가 다르므로 언어의 호환성이 없습니다. 어셈블리어 기계어와 1:1로 대응되는 기호로 이루어진 언어로, 니모닉(Mnemonic) 언어 라고도 합니다. 하드웨어 제어에 주로..
-
OS 2019.02.09 2[OS] 교착상태란 무엇인가? 교착상태란? 교착상태(Dead Lock)은 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 의미합니다. 아래 그림과 같이 자동차(프로세스)들이 현재 위치한 길(자원)을 점유함과 동시에 다른 차가 사용하는 길을 사용하려고 대기하고 있지만 다른 길을 사용할 수 없으며 현재 길에서도 벗어나지 못하는 상태입니다. 교착상태 발생의 필요 충분 조건 교착상태가 발생하기 위해서는 다음의 네가지 조건이 충족되어야 하는데, 이 네가지 조건중 하나라도 충족되지 않으면 교착상태가 발생하지 않습니다. 상호배제(Mutual Exclusion) 한번에 한개의 프로세스만이 공유 자원을 사용할 수 있어야 합니다. 점유와 대..
-
OS 2019.02.08[OS] 여러가지 프로세서 운영기법들 병행 프로세스 병행 프로세스는 두개이상의 프로세스들이 동시에 존재하며 실행 상태에 있는 것을 의미합니다. 1. 여러 프로세스들이독립적으로 실행되는 것을 독립적 병행 프로세스, 서로 협력하며 동시에 실행되는 것을 협동적 병행 프로세스라고 합니다. 2. 병행 프로세스는 다중 처리 시스템이나 분산 처리 시스템에서 중요한 개념으로 사용됩니다. 임계 구역 임계구역은 다중 프로그래밍 운영체제에서 여러개의 프로세스가 공유하는 데이터 및 자원에 대하여 어느 한 시점에서는 하나의 프로세스만 자원 또는 데이터를 사용하도록 지정된 공유 자원을 의미합니다. 1. 임계구역에는 하나의 프로세스만 접근할 수 있으며, 해당 프로세스가 자원을 반납한 후에만 다른 프로세스가 자원이나 데이터를 사용할 수 있습니다. 2. 임계 구역은 특정..
-
OS 2019.02.07 1[OS] 운영체제 스케줄링이란 무엇인가? 스케줄링이란? 1. 스케줄링은 프로세스가 생성되어 실행될때 필요한 시스템의 여러자원을 해당 프로세스에게 할당하는 작업을 의미합니다. 2. 프로세스가 생성되어 완료될때까지 프로세스는 여러 종류의 스케줄링 과정을 거치게 됩니다. 3. 스케줄링의 종류에는 장기 스케줄링, 중기 스케줄링, 단기 스케줄링이 있습니다. 장기 스케줄링 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업을 의미합니다. 작업 스케줄링, 상위 스케줄링이라고도 하며, 작업 스케줄러에 의해 수행됩니다. 중기 스케줄링 어떤 프로세스들이 CPU를 할당 받을 것인지 결정하는 작업을 의미합니다. CPU를 할당받으려는 프로세스가 많을 경우 프로세스를 일시 보류시킨 후 활성화해서 일시적으로 부하를 조절합니다..
-
OS 2019.02.06[OS] PCB란 무엇인가? PCB란? PCB(프로세스 제어블록)는 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳으로 Task Control Block 또는 Job Control Block이라고도 합니다. 각 프로세스가 생성될 때마다 고유의 PCB가 생성되며 프로세스가 완료되면 PCB는 제거됩니다. PCB에 저장되어 있는 정보 저장정보 설명 프로세스의 현재 상태 준비, 대기, 실행 등의 프로세스 상태 포인터 부모 프로세스에 대한 포인터 : 부모 프로세스의 주소 기억 자식 프로세스에 대한 포인터 : 자식 프로세스의 주소 기억 프로세스가 위치한 메모리에 대한 포인터 : 현재 프로세스가 위치한 주소 기억 할당된 자원에 대한 포인터 : 프로세스에 할당된 각 자원에 대한 주소 기억 프로세스 고유 식별자 프로세스를 구분할 수 있는 ..
-
OS 2019.02.05[OS] 프로세스란 무엇인가? 프로세스란? 프로세스는 일반적으로 CPU에 의해 처리되는 사용자 프로그램, 시스템 프로그램 즉 실행중인 프로그램을 의미하며, 작업(Job) 태스크(Task)라고도 합니다. 프로세스는 다음과 같이 여러 형태로 정의할 수 있습니다. 1. PCB를 가진 프로그램 2. 실기억장치에 저장된 프로그램 3. 프로세서가 할당되는 실체로서, 디스패치가 가능한 단위 4. 프로시저가 활동중인 것 5. 비동기적 행위를 일으키는 주체 6. 지정된 결과를 얻기 위한 일련의 계통적 동작 7. 목적 또는 결과에 따라 발생되는 사건들의 과정 8. 운영체제가 관리하는 실행 단위 ※ 프로시저란? 한 프로그램은 여러개의 작은 프로그램으로 분할될 수 있는데 이떄 분할된 작은 프로그램을 의미하며, 부 프로그램이라고도 합니다. 프로세스 상태 전..
-
OS 2019.02.03[OS] 링커와 로더란 무엇인가? 절대로더 링커(연결 편집기) 링커는 언어 번역 프로그램이 생성한 목적 프로그램들과 라이브러리 또 다른 실행 프로그램등을 연결하여 실행 가능한 로드 모듈을 만드는 시스템 소프트웨어이며 연결 편집기라고도 합니다. 링커는 연결 기능만 수행하는 로더의 한 형태로, 링커에 의해 수행되는 작업을 링킹이라고 합니다. 로더란 무엇인가? 로더는 컴퓨터 내부로 정보를 들여오거나 로드 모듈을 디스크 등의 보조기억장치로 부터 주 기억장치에 적재하는 시스템 소프트웨어 입니다. 로더의 기능 1. 할당 : 실행 프로그램을 실행시키기 위해 기억장치 내에 옮겨놓을 공간을 확보하는 기능 2. 연결 : 부 프로그램 호출 시 그 부 프로그램이 할당된 기억장소의 시작주소를 호출한 부분에 등록하여 연결하는 기능 3. 재배치 : 디스크등의 보조..
-
ETC. 2019.02.02 1[기타] 매크로 프로그래밍에 대해서 매크로 프로그래밍의 개념 및 특징 매크로(Macro)는 프로그램 작성 시 한 프로그램 내에서 동일한 코드가 반복 될 경우 반복되는 코드를 한번만 작성하여 특정 이름으로 정의한 후 그 코드가 필요할 때마다 정의된 이름을 호출하여 사용하는 기법입니다. 1. 일종의 부 프로그램(Sub-Program)으로 개방 서브루틴(Poened Sub-routine)이라고도 합니다. 2. 매크로는 문자열 바꾸기와 같이 매크로 이름이 호출되면 호출된 횟수만큼 정의된 매크로 코드가 해당 위치에 삽입되어 실행됩니다. 3. 매크로 정의 내에 또 다른 매크로를 정의할 수 있습니다. 4. 사용자의 반복적인 코드 입력을 줄여줍니다. 5. 매크로 정의형태는 주로 어셈블리어 형태입니다. 매크로 용어 매크로 정의 : 프로그래머가 일정한 형식..
-
Languague/Assembly 2019.02.01 1[Assembly] 어셈블리어란 무엇인가? 어셈블리어란? 어셈블리어란 사용자가 이해하기 어려운 기계어 대신에 명령 기능을 쉽게 연상할 수 있는 기호를 기계어와 1:1로 대응시켜 코드화한 기호 언어입니다. 1. 어셈블리어로 작성한 원시 프로그램은 어셈블러를 통해 목적 프로그램(기계어)로 어셈블 하는 과정을 거쳐야 합니다. 2. 사용자가 프로그램을 쉽게 읽고 이해할 수 있습니다. 3. 프로그램에 기호화된 명령 및 주소를 사용합니다. 4. 어셈블리어의 기본 동작은 동일하지만 작성 CPU마다 사용되는 어셈블리어가 다를 수 있습니다. 5. 어셈블리어에서 사용되는 명령은 의사 명령과 실행 명령으로 구분할 수 있습니다. 컴파일 vs 어셈블 고급언어로 작성한 원시 프로그램을 컴파일러가 기계어로 번역하는 작업을 컴파일(Complie)한다고 하고 어셈블리어로 작성..
-
Languague 2019.01.31[Language] 컴파일러와 인터프리터란 무엇인가? 컴파일러와 인터프리터는 고급언어로 작성된 원시 프로그램(Source Program)을 목적 프로그램(Object Program)으로 번역하는 번역 프로그램이며, 프로그램 번역 방식에 따라 구분됩니다. ※ 원시프로그램 고급언어나 어셈블리어로 작성된 프로그램 컴파일러 1. 컴파일러는 고급 언어로 작성된 프로그램 전체를 목적 프로그램으로 번역한 후, 링킹 작업을 통해 컴퓨터에서 실행 가능한 실행 프로그램을 생성합니다. 2. 번역 실행 과정을 거쳐야 하기 때문에 번역 과정이 번거롭고 번역 시간이 오래 걸리지만, 한번 번역한 후에는 다시 번역하지 않으므로 실행 속도가 빠릅니다. 3. 컴파일러를 사용하는 언어에는 C언어 Java 등이있습니다. 인터프리터 1. 인터프리터는 고급 언어로 작성된 프로그램을 한 줄 단위로..
-
Languague 2019.01.30[Language] 프로그래밍 언어란 무엇인가? 프로그래밍 언어란? 프로그래밍 언어는 컴퓨터를 이용하여 특정 문제를 해결하기 위한 프로그램을 작성하기 위해 사용되는 언어입니다. 프로그래밍 언어는 일반적으로 저급언어(기계어, 어셈블리어)와 고급 언어(컴파일러 언어) 로 분류할 수 있습니다. 저급 언어 저급언어(Low Level Language)는 기계어와 어셈블리어로 구분됩니다. 기계어 컴퓨터가 직접 이해할 수 있는 언어입니다. 0과 1의 2진수 형태로 표현되며 수행시간이 빠릅니다. CPU에 내장된 명령들을 직접 사용하는 것으로, 프로그램을 작성하고 이해하기가 어렵습니다. 기종마다 기계어가 다르므로 언어의 호환성이 없습니다. 어셈블리어 기계어와 1:1로 대응되는 기호로 이루어진 언어로, 니모닉(Mnemonic) 언어 라고도 합니다. 하드웨어 제어에 주로..