티스토리 뷰
- 메모리에 다수의 프로그램들을 실행 시키게 되면서 프로세스 개념 등장
- 병행실행 가능
- 프로그램 카운터 + 프로세스레지스터
프로세스 메모리 배치
고정
- 텍스트: 실행코드
- 데이터: 전역변수 (초기화, 미 초기화)
가변
- 힙: 동적 메모리
- 스택: 임시 데이터 저장장소 (함수,지역변수,매게변수, 복귀주소)
스택과 힙은 양방향으로 크기를 확장 시켜나가며 겹치지 않도록 조심해야한다.
프로세스 상태
- new: 프로세스 생성
- running: 프로세스를 할당받아 명령어 실행
- wating: 프로세스가 이벤트가 일어나기를 기다린다 (입출력완료)
- ready: 프로세스를 할당받기를 기다린다.
- terminated: 프로세스 종료
프로세스 제어블록
- 프로세스 상태
- 프로그램 카운터
- cpu 레지스터
- cpu 스케줄링 정보
- 메모리 관리 정보
- 회계 정보
- 입출력 상태정보
스레드
- 병렬로 실행 가능하다.
- 한 번의 하나이상의 일을 가능하게 한다.
- 예시로 워드 같은 경우 철자 검사와 입력이 동시에 진행이 가능하다.
프로세스 스케줄링
cpu 이용을 최대화 하기 위해 프로세스를 스케줄링 하는 방법
준비큐
- 프로세스를 할당받길 기다린다
- 연결리스트로 구성
대기큐
- 프로세스에 어떤 이벤트가 일어나길 기다린다
- 연결리스트로 똑같이 구성
큐잉 다이어그램
- cpu 할당이 끝남으로 대기큐에 삽입
- 프로세스 준비상태로 변하면서 준비큐에 다시 삽입
- 입출력 종료
- 아들 프로세스 종료
- 인터럽트 및 타임슬라이스(cpu 할당시간) 종료
cpu 스케줄링
문맥
인터럽트 종료 후 문맥 복구를 위해 pcb에 저장하는 형태
문맥교환이란?
cpu스케줄링에 의해 프로세스가 새롭게 할당받으면서 문맥간의 교환이 일어나는 상태
- 커널은 현재 프로세스의 문맥을 pcb에 저장한다
- 새롭게 할당받은 프로세스의 문맥을 복구한다.
문맥교환의 경우 문맥을 교환하는 동안 cpu가 일을 할 수 없어 오버헤드가 발생한다
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 가장 긴 짝수 연속한 부분 수열
- nestjs 배포하기
- suspense 장점
- react suspense
- 표현 가능한 이진트리
- 미로탈출 명령어
- 서버사이드 error handling
- 선언적 UI
- 에러핸들링
- serverless nestjs
- nextjs errorboundary
- React useMemo
- node 버전 마이그레이션
- 백준 22862
- node version yarn berry
- 서비스 디자인 패턴
- javascript
- storybook react is not defiend 해결
- React useCallback
- serverless 배포
- 1600 파이썬
- 백준 1600번
- storybook scss import
- 불량 사용자 자바스크립트
- storybook scss이슈
- nextjs 에러핸들링
- CSS
- useCallback과 useMemo 사용
- 자바스크립트
- 관심사 분리하기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함