일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 99일지
- 컴퓨터개론
- java
- 항해
- 컴퓨터구조론 5판
- 중심사회
- Python
- 스파르타코딩클럽
- 스파르타내일배움캠프TIL
- 스파르타내일배움캠프
- MySQL
- til
- AWS
- 국비
- 개발자블로그
- 소프트웨어
- 개발자스터디
- 스파르타내일배움캠프WIL
- 자바
- 프로그래머스
- 부트캠프
- 백준
- 개인공부
- Spring
- 코딩테스트
- 99클럽
- Flutter
- 운영체제
- 내일배움캠프
- wil
- Today
- Total
목록📖 이론/운영체제 (8)
컴공생의 발자취
같은 address space 안에 살고 있다 병렬 처리가 가능해 진다 전역변수를 통한 데이터 공유가 가능하다 일반적으로 프로세스가 생성되면 싱글 스레드로 동작한다 thread를 사용하면 CPU core가 하나만 있는 경우라도 코드의 동시 실행이 가능하다 * parallelism: 시스템이 둘 이상의 작업을 동시에 수행할 수 있음 실제 물리적으로 동시에 동작(코어 2개 이상) * concurrency: 두 개 이상의 작업을 지원하여 진행 중 단일 프로세서 코어, 동시성을 제공하는 스케쥴러 일반적인 thread 간 통신은 큐를 사용 프로세스당 프로그램 카운터가 여러 개인 것을 고려한다 여러 위치를 동시에 실행할 수 있음(다중 제어 스레드 -> 스레드) thread 세부 정보를 저장할 수 있어야 한다. PC..
pthread는 POSIX API이다 linux, window 동작 프로그램 제작 가능(가장 큰 장점) POSIX는 주어진 기능이 함수로 완전히 구현된 상태가 아니다 * POSIX는 유닉스 호환 운영체제이다 POSIX API로 소스코드를 마들면 POSIX를 지원하는 다른 운영체제에서도 컴파일은 된다 * 하지만, 컴파일된 실행 파일을 POSIX를 지원하는 다른 운영체제에서 실행하려하면 안된다 -> 동작이 다르기 때문이다
각 프로세스와 관련된 정보 - process state: 실행 중, 대기 중 - program counter: 다음 실행 명령 위치 - CPU registers: 모든 프로세스 중심 레지스터의 내용 - CPU scheduling information: 우선 순위, 대기열 포인터 예약 - Memory-Management information: 프로세스에 할당된 메모리 - Accounting information: 사용된 CPU, 시작 후 경과된 클럭 시간, 제한 시간 - I/O status information: 프로세스에 할당된 I/O 디바이스, 열린 파일 목록 * task control block라고도 함 * process state가 기록된다 * cpu registers가 기록된다 * 프로세스 메모리..
new: The process is being created running: Instructions are being excuted waiting: The process is waiting for some event to occur ready: The process is waiting to be assigned to a process terminated: The process has finished execution
monolithic kernel: 모든 기능이 전부 kernel에 들어가 있는 구조 - 추가시: 업데이트 -> 리부팅: 컴파일 새로 - 장점: 빠른 시간 내에 영역 처리(function call) micro kernel: kernel에 있는 다양한 기능들이 user 맵에 올라오고 그 기능들을 사용하기 위해 순수 요청(메세지 패싱) - 주요 모델 다 개별 프로세스 - IPC 기능을 이용 - 장점: 시스템이 무너지지 않는다. - 단점: 메세지 전달 오버헤드가 많다. 신뢰성: micro > mono mono kernel micro kernel
동시에 2개 이상의 실행 흐름을 만들어 낼 수 있다. 부모-자식 관계가 형성된다. 실행하는 시점에 동일한 프로세스 이미지가 하나 더 생성된다. 주소공간: 부모의 하위 중복, 자식이 프로그램을 로드한다. fork() system: 호출을 통해 새로운 프로세스 생성 프로세스의 메모리 공간을 새 프로그램으로 바꾸기 위해 fork() 뒤에 사용되는 exec() c언어(Linux) #include #include #include #include int main(int argc, char* argv[]){ pid_t pid; pid = fork(); if(pid0){ // 부모 프로세스 생성 printf("hello\n"); wait(NULL); // 자식 프로세스가 끝날 때까지 기다린다. } else{ // 자식..
CISC(Complex Instruction Set Computer)는 필요한 모든 명령어 셋을 갖추도록 설계된 마이크로프로세서에 관련된 용어, 요구되는 능력을 가장 효율적인 방법으로 제공했었다. CISC 명령은 매우 작기 때문에, 그 당시 메모리 부족의 문제점을 보완할 수 있었다. 그러나 그 후, instruction set 자체를 가장 자주 사용되는 명령어만으로 개수를 줄임으로써 대부분의 활용업무 면에서 소요되는 시간을 줄일 수 있는 방법이 고안되었는데, 이것을 RISC(Reduced Instruction Set Computer)라고 불렀다. CISC(Complex Instruction Set Computer) 명령어 개수가 많음 명령어 길이가 다양하며, 실행 사이클도 명령어 마다 다름 회로 구성이 ..
출처 : https://cho001.tistory.com/42 리눅스 IPC 프로그래밍(IPC종류) [1] IPC(Inter Process Communication) - 프로세스 간 통신에 대하여 종류와 특징들에 대하여 살펴보겠습니다. [리눅스 커널 구조] - 위 그림처럼 Process는 완전히 독립된 실행객체입니다. 서로 독립되어 cho001.tistory.com 1. PIPE [IPC] pipe 예제 코드 - 정의 : 익명의 PIPE를 통해서 동일한 PPID를 가진 프로세스 간에 단방향 통신을 지원 - FIFO 구조 - 생성된 PIPE에 대하여 Write 또는 Read만 가능 - 사용 : 부모 자식 프로세스 간에 통신할 때 사용 - 쌍방 통신을 위해서는 Write 용 PIPE 하나 Read PIPE ..