분류 전체보기

PCB(Process Control Block)? 운영체제가 프로세스를 제어하기 위해 정보(CPU 레지스터 값들)를 저장해 놓은 곳으로 프로세스의 상태 정보를 저장하는 구조체 운영체제가 프로세스 스케줄링을 위해 프로세스에 관한 모든 정보를 가지고 있는 데이터베이스 각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거된다. 프로세스는 CPU를 점유하여 작업을 처리하다가도 상태가 전이되면, 진행하던 작업 내용들을 모두 정리하고 CPU를 반환해야함 진행하던 작업들을 모두 저장하지 않으면 다음에 자신의 순서가 왔을 때 어떠한 작업을 해야하는지 알 수 없는 사태가 발생한다. 프로세스는 CPU가 처리하던 작업의 내용들을 자신의 PCB에 저장 다음에 다시 CPU를 점유하여 작업을 ..
System Call? System Call(시스템 콜)은 운영체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스다. 보통 C나 C++과 같은 고급 언어로 작성된 프로그램들은 직접 시스템 호출을 사용할 수 없기 때문에 고급 API를 통해 시스템 호출에 접근하게 하는 방법이다. 사용자 프로그램이 디스크 파일에 접근하거나 화면에 결과를 출력하는 등의 작업이 필요한 경우, 즉 사용자 프로그램이 특권 명령의 수행을 필요한 경우 운영체제에 특권 명령의 대행을 요청하는 것이 시스템 콜이다. 시스템 콜은 여려 종류의 기능으로 나누어진다. 각 시스템 콜에는 번호가 할당되고 시스템 콜 인터페이스는 시스템 콜 번호와 시스템 콜 헨들러 함수 주소로 구성된 시스템 콜 테이블을 ..
· C++
enum class? enum class는 C++11에서 enum 자료형의 단점을 보안하기 위해 도입된 것이다. enum의 문제점은 enum은 별도의 이름공간(namespace)를 가지고 있지 않는 것 간단히 이야기하면 enum 들을 정확하게 구분하기 위해서 enum class가 도입된 것 기존 enum의 문법 #include using namespace std; enum ECar{ BMW, AUDI, KIA, BENZ, HYUNDAE, PORSCHE, }; enum EKoreaCar{ KIA, HYUNDAE, }; int main(void) { int num = KIA; //error cout
Interrupt(인터럽트)? 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행 중인 작업을 즉시 중단하고, 발생된 상황에 대한 우선 처리가 필요함을 CPU에게 알리는 것 지금 수행 중인 일보다 더 중요한 일(입출력, 우선 순위 연산 등)이 발생하면 그 일을 먼저 처리하고 나서 하던 일을 계속해야한다. 외부/내부 인터럽트는 CPU의 하드웨어 신호에 의해 발생 소프트웨어 인터럽트는 명령어의 수행에 의해 발생 외부 인터럽트 입출력 장치, 타이밍 장치, 전원 등 외부적인 요인으로 발생 예) 전기신호, 기계 착오, 외부 신호, 입출력 내부 인터럽트 Trap으로 부르며, 잘못된 명령이나 데이터를 사용할 때 발생 예) 0으로 나누기가 발생, 오버플로우, 명령어를 잘못 사용한 경우(Exceptio..
Process(프로세스) & Thread(스레드)? 프로세스는 다음과 같이 정의한다. 운영체제로부터 자원을 할당받은 작업의 단위 스레드는 다음과 같이 정의한다. 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위 한줄로 정의하면 프로세스는 작업의 단위이며 스레드는 실행 흐름듸 단위라고 할 수 있다. 프로그램과 프로세스 정적 프로그램(Static Program) 프로그램은 컴퓨터에서 실행할 수 있는 파일을 통칭한다. 단, 아직 파일을 실행하지 않은 상태이기 때문에 정적 프로그램 줄여서 프로그램이라고 부른다 프로그램은 자바나 C언어를 이용해 코드를 작성하여 완성한다. 즉, 프로그램은 코드 덩어리로 볼 수 있다. 프로세스(Process) 프로세스는 프로그램을 실행시켜 정적인 프로그램이 동적으로 변하여 프로그..
Operating System(운영체제)? 하드웨어를 관리하고, 컴퓨터 시스템의 자원을 효율적으로 관리한다. 응용프로그램과 하드웨어 간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공한다. 운영체제는 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어라고 할 수 있다. 종류로는 Window, Linux, UNIX, MS-DOS 등이 있으며, 시스템의 역할 구분에 따라 용이점이 있다. 운영체제 목적 운영체제의 목적에는 처리능력 향상, 사용 가능도 향상, 신뢰도 향상, 반환 시간 단축 등이 있다. 처리능력, 반환시간, 사용가능도, 신뢰도는 운영체제의 성능을 평가하는 기준이 된다. 처리능력(Throughput) 일정시간 내에 시스템이 처리하는..
· C++
nullptr(널포인터)? nullptr은 C++11부터 추가된 새로운 키워드이다. 기존 C, C++은 NULL이나 0을 사용해 포인터를 초기화 하였다. nullptr은 널 포인터 값(Null Pointer Value)를 나타내는 포인터 리터럴(Pointer Literal)이다. 즉, 포인터를 표현하는 값 중 널을 표현한 값이다. int* ptr1 = 0; int* ptr2 = nullptr; 기존의 방식과 동일하게 0으로 초기화할 수 있지만 nullptr을 사용하는 것이 직관적 이전에 0을 사용해서 초기화하는 방식은 실제 0을 저장시 모호한 상황이 발생할 수 있음 nullptr 사용 시 모호한 상황이 아닌 포인터만 체크할 수 있다는 장점이 있음 nullptr_t 타입 C++11부터 만들어진 nullpt..
· C++
static_cast? C++에서 제공하는 기능중 하나로 프로그래머가 형변환을 할 때 오류를 체크 기본 형태 static_cast(대상); static_cast(expression) 논리적으로 변환 가능한 타입을 변환 compile 타임에 형변환에 대한 타입 오류를 잡아준다. 실수와 정수, 열거형과 정수형, 실수와 실수 사이의 변환 등을 허용 Array -> point로 변환이 가능 function -> function pointer로 변환이 가능 포인터 타입을 다른 것으로 변환하는 것을 허용하지 않는다. 단, 상속 관계에 있는 포인터 끼리는 변환이 가능 바꾸려는 타입에는 void 형이 올 수 있지만 계산 후 제거된다. 일반 변수 간의 형변환 #include using namespace std; int ..
hanseongbugi
'분류 전체보기' 카테고리의 글 목록 (22 Page)