컴퓨터공학
-
프로세스 개요 운영체제는 프로그램을 메모리에 적재하고 이를 프로세스라고 부른다 운영체제는 프로세스에게 별도의 메모리 공간을 할당하고 이곳에 코드와 데이터 등을 적재한다 CPU는 하드디스크에 저장된 상태에서 코드를 실행하지 않고 메모리에 적재된 코드들만 실행하기 때문 프로세스는 서로 독립적인 메모리 공간을 가지므로 다른 프로세스의 영역에 접근 할 수 없다 다른 프로세스와의 데이터를 주고 받으려면 커널을 통해야 함 커널은 프로세스마다 고유한 번호를 할당한다 프로세스에 관한 정보는 커널에 의해 관리된다 프로세스의 모든 관리는 커널에 의해 수행된다. 프로세스 관리 프로세스는 운영체제가 응용프로그램의 실행을 위해 생성한 것으로 운영체제의 커널은 프로세스의 생성에서 종료까지 모든것을 관리한다. 커널은 프로세스를 위..
프로세스(Process)프로세스 개요 운영체제는 프로그램을 메모리에 적재하고 이를 프로세스라고 부른다 운영체제는 프로세스에게 별도의 메모리 공간을 할당하고 이곳에 코드와 데이터 등을 적재한다 CPU는 하드디스크에 저장된 상태에서 코드를 실행하지 않고 메모리에 적재된 코드들만 실행하기 때문 프로세스는 서로 독립적인 메모리 공간을 가지므로 다른 프로세스의 영역에 접근 할 수 없다 다른 프로세스와의 데이터를 주고 받으려면 커널을 통해야 함 커널은 프로세스마다 고유한 번호를 할당한다 프로세스에 관한 정보는 커널에 의해 관리된다 프로세스의 모든 관리는 커널에 의해 수행된다. 프로세스 관리 프로세스는 운영체제가 응용프로그램의 실행을 위해 생성한 것으로 운영체제의 커널은 프로세스의 생성에서 종료까지 모든것을 관리한다. 커널은 프로세스를 위..
2024.01.05 -
Q1 : 파일 입출력 시에 응용프로그램, 운영체제, 디스크 장치가 각각 사용하는 주소에 대해 설명하고 주소 변환이 어디서 이루어지는지 설명하라. 여기서 운영체제는 CHS 물리 주소를 사용하지 않고 논리 블록 주소만 사용한다. 이렇게 함으로써 얻어지는 장점은 무엇인가? A1 : 응용프로그램은 파일 내 바이트 주소를 사용하고 운영체제는 논리 블록 주소를 사용하며 디스크 장치는 디스크 물리 주소를 사용한다. 응용프로그램에서 운영체제에게 바이트 주소를 알려주면 운영체제는 바이트 주소를 논리 블록 주소로 변환하고 논리 블록 주소를 디스크장치에게 전달해주면 디스크 장치는 논리 블록 주소를 CHS 물리 주소로 변환한다. 운영체제가 논리 블록 주소만 사용하는 이유는 저장매체의 종류나 하드웨어 특징에 관계없이 구현가능하..
11장 파일 시스템 관리Q1 : 파일 입출력 시에 응용프로그램, 운영체제, 디스크 장치가 각각 사용하는 주소에 대해 설명하고 주소 변환이 어디서 이루어지는지 설명하라. 여기서 운영체제는 CHS 물리 주소를 사용하지 않고 논리 블록 주소만 사용한다. 이렇게 함으로써 얻어지는 장점은 무엇인가? A1 : 응용프로그램은 파일 내 바이트 주소를 사용하고 운영체제는 논리 블록 주소를 사용하며 디스크 장치는 디스크 물리 주소를 사용한다. 응용프로그램에서 운영체제에게 바이트 주소를 알려주면 운영체제는 바이트 주소를 논리 블록 주소로 변환하고 논리 블록 주소를 디스크장치에게 전달해주면 디스크 장치는 논리 블록 주소를 CHS 물리 주소로 변환한다. 운영체제가 논리 블록 주소만 사용하는 이유는 저장매체의 종류나 하드웨어 특징에 관계없이 구현가능하..
2023.05.28 -
Q1 : 요구 페이징 기법에 대해, 왜 이 기법이 발생하기 되었는지를 포함하고 요구의 의미를 담아, 요구 페이징을 3줄로 정의하라. A1 : 설치된 물리 메모리보다 큰 프로세스를 실행시키거나 여러 프로세스들을 합친 크기가 설치된 물리 메모리보다 클때 이를 실행시키기 위한 방법. 프로세스의 모든 페이지를 메모리에 올려 놓지 않고 해당 페이지가 필요할 때 물리메모리로 적재 하고 필요하지 않을때에는 하드디스크의 스왑영역에 저장. Q2 : dirty page란 어떤 페이지를 뜻하는가? 어떻게 구분하는가? A2 : 페이지가 프레임에 적재된 이후 수정된 페이지를 스왑아웃 할때 스왑영역에 저장. modified/dirty bit가 1이면 dirty page Q3 : 페이지 폴트(page fault)는 언제 발생하는가..
10장 가상 메모리Q1 : 요구 페이징 기법에 대해, 왜 이 기법이 발생하기 되었는지를 포함하고 요구의 의미를 담아, 요구 페이징을 3줄로 정의하라. A1 : 설치된 물리 메모리보다 큰 프로세스를 실행시키거나 여러 프로세스들을 합친 크기가 설치된 물리 메모리보다 클때 이를 실행시키기 위한 방법. 프로세스의 모든 페이지를 메모리에 올려 놓지 않고 해당 페이지가 필요할 때 물리메모리로 적재 하고 필요하지 않을때에는 하드디스크의 스왑영역에 저장. Q2 : dirty page란 어떤 페이지를 뜻하는가? 어떻게 구분하는가? A2 : 페이지가 프레임에 적재된 이후 수정된 페이지를 스왑아웃 할때 스왑영역에 저장. modified/dirty bit가 1이면 dirty page Q3 : 페이지 폴트(page fault)는 언제 발생하는가..
2023.05.28 -
Q1 : 페이징에서 논리 주소는 페이지 번호와 옵셋으로 구성된다. 1GB의 메모리를 가진 32비트 컴퓨터에서 한 페이지의 크기가 8KB인 경우 다음 질문에 답하라. (1) 논리 주소에서 페이지 번호와 옵셋의 크기는 각각 몇 비트인가? A : 페이지번호의 크기 : 19비트. 옵셋의 크기 : 13비트 (2) 물리 메모리는 몇 개의 프레임이 존재하는가? A : 2^30 / 2^13 = 2^17 (3) 사용자 주소 공간의 크기가 2GB일 때, 이 컴퓨터에서 작성할 수 있는 응용프로그램의 크기는 얼마인지 이유와 함께 말하라. A : 2GB. 프로세스의 주소공간은 실제주소공간이 아닌 가상공간이기 때문에 운영체제가 정해준 사용자 공간의 크기만큼 작성가능하다. (4) 페이지 테이블의 한 항목 크기가 4바이트라고 할 때..
9장 페이징 메모리Q1 : 페이징에서 논리 주소는 페이지 번호와 옵셋으로 구성된다. 1GB의 메모리를 가진 32비트 컴퓨터에서 한 페이지의 크기가 8KB인 경우 다음 질문에 답하라. (1) 논리 주소에서 페이지 번호와 옵셋의 크기는 각각 몇 비트인가? A : 페이지번호의 크기 : 19비트. 옵셋의 크기 : 13비트 (2) 물리 메모리는 몇 개의 프레임이 존재하는가? A : 2^30 / 2^13 = 2^17 (3) 사용자 주소 공간의 크기가 2GB일 때, 이 컴퓨터에서 작성할 수 있는 응용프로그램의 크기는 얼마인지 이유와 함께 말하라. A : 2GB. 프로세스의 주소공간은 실제주소공간이 아닌 가상공간이기 때문에 운영체제가 정해준 사용자 공간의 크기만큼 작성가능하다. (4) 페이지 테이블의 한 항목 크기가 4바이트라고 할 때..
2023.05.28 -
Q1 : 식사하는 철학자란 어떤 문제를 다루기 위한 문제 제기인가? 누가 처음 든 예이며, 이를 공식화한 사람은 누구인가? 제기된 문제와 해결하는 방법은 무엇인지 설명하라. A1 : 병렬 처리에서의 동기화 문제와 해결 방법을 다루기 위한 문제. Edsger Dijkstra가 처음든 예이고 Prentice Hall출판사에서 공식화 하였다. Q2 : 교착상태를 정의해보라. A2 : 자원을 소유한 스레드들 사이에서 각 스레드는 다른 스레드가 소유한 자원을 요청하여 무한정 대기하고 있는 현상. Q3 : 교착상태가 발생할 필요조건 4가지를 무엇이라고 하는가, 그리고 4가지의 조건은? A3 : 상호배제 : 각 자원은 한번에 하나의 스레드에게만 할당 소유하면서 대기 : 스레드가 한 자원을 소유하면서 다른 자원을 기다..
7장 교착상태Q1 : 식사하는 철학자란 어떤 문제를 다루기 위한 문제 제기인가? 누가 처음 든 예이며, 이를 공식화한 사람은 누구인가? 제기된 문제와 해결하는 방법은 무엇인지 설명하라. A1 : 병렬 처리에서의 동기화 문제와 해결 방법을 다루기 위한 문제. Edsger Dijkstra가 처음든 예이고 Prentice Hall출판사에서 공식화 하였다. Q2 : 교착상태를 정의해보라. A2 : 자원을 소유한 스레드들 사이에서 각 스레드는 다른 스레드가 소유한 자원을 요청하여 무한정 대기하고 있는 현상. Q3 : 교착상태가 발생할 필요조건 4가지를 무엇이라고 하는가, 그리고 4가지의 조건은? A3 : 상호배제 : 각 자원은 한번에 하나의 스레드에게만 할당 소유하면서 대기 : 스레드가 한 자원을 소유하면서 다른 자원을 기다..
2023.05.28 -
Q1 : 멀티스레드 응용프로그램을 작성하면 반드시 스레드 동기화가 필요한지에 대해 자신의 생각을 간단히 논하라. A1 : 반드시 필요하진 않은것 같다 멀티스레드 응용프로그램이여도 공유데이터에 접근하지않고 개별데이터로 실행되는 프로그램이라면 스레드 동기화가 필요하지 않기 때문이다. Q2 : 스레드 동기화가 무엇인지 나름대로 설명하는 긴 문장을, 상호 배재, 임계 구역, 멀티스레드, 원자 명령의 단어를 연결하여 작성해보라. A2 : 멀티스레드 응용프로그램을 실행중 다수의 스레드가 공유데이터에 동시에 접근하여 공유 데이터가 훼손되어 이를 막기위한 방법이 필요해졌다. 스레드 동기화는 스레드가 공유 데이터에 접근하는 코드의 영역인 임계구역에 한 스레드만 접근하게 하는 기술이다. 임계구역을 어느 시점에서 한 스레드..
6장 스레드 동기화Q1 : 멀티스레드 응용프로그램을 작성하면 반드시 스레드 동기화가 필요한지에 대해 자신의 생각을 간단히 논하라. A1 : 반드시 필요하진 않은것 같다 멀티스레드 응용프로그램이여도 공유데이터에 접근하지않고 개별데이터로 실행되는 프로그램이라면 스레드 동기화가 필요하지 않기 때문이다. Q2 : 스레드 동기화가 무엇인지 나름대로 설명하는 긴 문장을, 상호 배재, 임계 구역, 멀티스레드, 원자 명령의 단어를 연결하여 작성해보라. A2 : 멀티스레드 응용프로그램을 실행중 다수의 스레드가 공유데이터에 동시에 접근하여 공유 데이터가 훼손되어 이를 막기위한 방법이 필요해졌다. 스레드 동기화는 스레드가 공유 데이터에 접근하는 코드의 영역인 임계구역에 한 스레드만 접근하게 하는 기술이다. 임계구역을 어느 시점에서 한 스레드..
2023.05.28 -
Q1 : CPU 스케줄링의 기본 목표는 무엇인가? CPU 스케줄링 알고리즘들을 평가하는 기준 6가지만 간단히 설명하라. A1 : CPU 스케줄링의 목표는 CPU를 가능한 놀지 않게 하여 CPU 활용률을 높이고, 컴퓨터 시스템이 단위 시간 당 더 많은 스레드를 처리하는 데에 있다. 1. CPU 활용율 : 컴퓨터 전체 기동 시간에 대한 CPU 사용 시간의 비율 2. 처리율 : 단위 시간 당 처리하는 스레드의 개수 3. 공평성 : 기아 스레드가 생기지 않도록, 모든 스레드에게 CPU 사용시간을 공평하게 배분 4. 응답 시간 : 사용자에 대한 응답에 걸리는 시간 5. 대기 시간 : 스레드가 준비 리스트에서 CPU를 할당 받을때까지 기다리는 시간 6. 소요 시간 : 다중프로그래밍 시스템 입장 : 프로세스가 시작되..
5장 CPU 스케줄링Q1 : CPU 스케줄링의 기본 목표는 무엇인가? CPU 스케줄링 알고리즘들을 평가하는 기준 6가지만 간단히 설명하라. A1 : CPU 스케줄링의 목표는 CPU를 가능한 놀지 않게 하여 CPU 활용률을 높이고, 컴퓨터 시스템이 단위 시간 당 더 많은 스레드를 처리하는 데에 있다. 1. CPU 활용율 : 컴퓨터 전체 기동 시간에 대한 CPU 사용 시간의 비율 2. 처리율 : 단위 시간 당 처리하는 스레드의 개수 3. 공평성 : 기아 스레드가 생기지 않도록, 모든 스레드에게 CPU 사용시간을 공평하게 배분 4. 응답 시간 : 사용자에 대한 응답에 걸리는 시간 5. 대기 시간 : 스레드가 준비 리스트에서 CPU를 할당 받을때까지 기다리는 시간 6. 소요 시간 : 다중프로그래밍 시스템 입장 : 프로세스가 시작되..
2022.01.13 -
//myshell.c #include #include #include #include #include #include #include #include #define READ 0 #define WRITE 1 #define SIZE 1024 char* cmd[SIZE]; char* ptr; int cmd_index; void init() { // 전역변수 초기화 for (int i = 0; i "); while (ptr = strtok(N..
shell 프로그램//myshell.c #include #include #include #include #include #include #include #include #define READ 0 #define WRITE 1 #define SIZE 1024 char* cmd[SIZE]; char* ptr; int cmd_index; void init() { // 전역변수 초기화 for (int i = 0; i "); while (ptr = strtok(N..
2022.01.12