일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 연결리스트
- 웹팩
- 프로그래머스
- 코딩테스트
- pytorch
- 프로세스
- C
- 프론트엔드
- APOLLO
- GraphQL
- alexnet
- 스택
- 해시테이블
- 이진탐색
- 자바스크립트
- cors
- 포인터
- 컨테이너
- Machine Learning
- 자료구조
- 알고리즘
- 타입스크립트
- 배열
- RxJS
- 릿코드
- RT scheduling
- 브라우저
- vue3
- 연결 리스트
- 큐
- Today
- Total
목록프로세스 (5)
프린세스 다이어리
#include #include #include #include int main() { int fd; fd = open("data.txt", O_RDONLY); if(fd == -1) { printf("Error: cannot open file\n"); /* 파일을 열지 못했으므로 종료 */ return 1; } else { printf("File opened and now close_\n"); close(fd); return(); } } 위와 같은 C언어 코드가 있다. 파일을 읽는 간단한 프로그램이다. 이 파일이 컴파일되면 실행파일의 사이즈는 1KB 남짓 될 것이다. 운영체제에서 실행을 하기 위해서는 반드시 프로세스가 만들어져야 한다. 이 프로세스가 차지하는 가상 메모리 영역은 1KB도 2KB도 아니고..
제목의 답부터 말하자면 둘 중에 뚜렷하게 좋고 나쁨이 갈리는 게 아니다. 프로세스와 스레드 각각의 특성과 장단점이 있기 때문에 운영체제의 복잡성이나 프로그램의 특성 등을 고려해서 채택된다. 1. 프로세스와 스레드의 특징 차이 프로세스란 실행 중인 프로그램으로, 1개의 CPU가 한 번에 한 프로세스만을 실행할 수 있고 프로세스 간 데이터 접근이 불가하다는 특징이 있다. 스레드란 한 개의 프로세스 안에 여러 개의 프로세스를 동시에 생성 및 실행 가능한 구조다. 프로세스 안에서는 모든 스레드끼리 데이터에 접근이 가능하다. 멀티프로그래밍을 구현할 때 CPU가 어떻게 콘텍스트 스위칭을 하는지 이전 글에 정리해 두었다. 프로세스를 한꺼번에 여러 개 실행하는 것처럼 보이기 위해 CPU는 레지스터의 도움을 받아서 사용..
1. 프로세스의 구조 프로세스는 크게 stack, heap, data, code로 구성되어 있다. 프로그램 소스가 컴파일되어 기계어로 code 부분에 저장이 되고, 글로벌 변수는 data에 저장이 되고, 함수 및 지역변수 등이 선언되면 stack으로 들어간다. stack - 임시 데이터(함수 호출, 로컬 변수 등) 저장 heap - 코드에서 동적으로 만들어지는 데이터 저장 data - 변수, 초기화된 데이터 code(text) - 컴파일된 코드 이렇게 프로세스가 구성되어 CPU가 코드를 읽으며 실행을 한다. 위에 파이썬 코드에서는 heap 영역에 해당하는 변수는 없지만 C에서 malloc() 동적 메모리 할당 시 heap 공간에 메모리가 생성이 된다. int main() { int *data; data ..
1. 인터럽트란 CPU가 프로세스 a를 실행 중일 때, 파일 읽기의 끝이 나서 block 상태에서 running 상태로 돌아가야 한다고 가정해 보자. 그럼 누가 CPU에게 파일 읽기가 끝났다고 알려줄까? 바로 인터럽트 기술이 기본적으로 OS에 구현되어 있기 때문에 가능하다. 인터럽트는 일종의 이벤트로, CPU에게 정보를 알려주는 기술이다. 이전 글에서 CPU가 실행 중인 프로세스를 강제로 중단하고 다른 프로세스로 갈아타게 만드는 걸 스케줄러가 담당한다고 하였는데, 그 스케줄러 코드를 실행하게 하는 것이 인터럽트다. 2. 인터럽트 발생 상황 예시 CPU가 코드를 한 줄 한 줄 읽는데 집중하다가 인터럽트가 필요하면 즉시 실행을 멈춘다. 이때 실행을 멈춰야 하는 3가지 주요 상황이 있다. 2-1. 입출력 하드..
1. 프로세스 상태 초기 컴퓨터에서 한정된 컴퓨팅 자원으로 여러 프로그래밍을 동시에 실행하(는 것처럼 보이)고 싶어 CPU가 여러 프로세스를 바꿔치기하면서 그때그때 적당한 프로세스를 실행하게 했고 그걸 가능하게 한 것이 스케줄러다. 간단한 키보드 입력 같은 경우에는 바로 실행이 끝나지만, 프로세스 도중에 파일을 읽고 출력을 해야 하는 프로그램이 있다면, 저장매체에서 파일을 읽어와서 다시 돌아오는 도중에는 프로세스가 wait 상태로 실행하지 않는 상태다. 미리 CPU가 파악을 하고 있어야 프로세스가 멈춘 상태일 때 대기 중인 상태의 다른 프로세스를 먼저 실행시킬지 판단할 수 있다. 프로세스 상태에 대해 좀 더 알아보자. 1. 프로세스 생성(new) - 생성중인 프로세스 2. 실행 가능(ready) - CP..