프로세스
: 실행중인 프로그램을 의미.
디스크에 저장된 수동적 파일(실행파일)이 메모리에 적재될때 프로세스가 된다.
잡(job)
이라고도 한다.
메모리 상태에서 프로세스
[실무이야기]사용자가 관리하는 힙(Heap) 영역
Q. WAS에 배포한 엔터프라이즈 코드에 액셀파일 업/다운로드 기능이 있는데, 해당 기능만 실행하면 OOM 에러가 발생해요~~
A. 자동으로 할당된 힙 메모리가 대용량 파일 다운로드하는데 필요한 메모리보다 적게 할당되어 있을 수 있으니 java virtual machine에 힙메모리를 크게 설정해보자. -Xms2048m -Xmx2048m
옵션을 적용!힙메모리 최소/최대를 2G로 설정
프로세스 상태
프로세스 제어블록(PCB)
PCB는 프로세스가 생성되면 같이 생성되고 종료되면 소멸
프로세스 스케쥴링
CPU를 어떻게 효율적으로 사용할 수 있을까?
-> 대기시간 최소화, 최대한 공평하게, idle(유휴) 최소화
프로세스가 시스템에 들어오면 Job Queue
에 들어간다.
그후 메인 메모리에 올라가고 준비가 완료되면 (실행대기) Ready Queue
에 들어가. 레디큐는 링크드 리스트로 이루어져 있는데, queue의 header 에서 head는 첫번째 PCB의 주소를 가리키고, tail은 마지막 PCB의 주소를 가리킨다. 각 PCB의 head는 next process를 가리킨다.
특정 I/O장치를 기다리는 프로세스들은 Device Queue
에 들어가
장기/중기/단기 스케쥴러
장기 : 잡 스케쥴러, 실행 빈도 낮음(M), 메모리상의 프로세스들이 수를 제어, 입출력 중심 + CPU 중심 적절한 혼합 중요
중기 : 일부 운영체제가 도입, 메모리에서 프로세스들을 제거, 메모리 상의 프로세스들의 수를 완화, 스와핑(Swapping)
단기 : CPU 스케쥴러, 실행 빈도 높음(ms)
컨텍스트 스위치(문맥교환)
인터럽트가 일어났을때 하던일을 멈추고 인터럽트가 발생된 곳에서 일을 마치고 다시 원래 하던일로 돌아오는데 이때 어떤값
을 어디에
저장해야할까?
어떤값
: 실행중이던 프로세스의 문맥(context) - CPU 레지스트리값, 프로세스 상태, 메모리 관리정보 등의 값이 포함되어있음
어디에
: PCB(Process Block)
그리고 이 과정을 context switch
라고 한다!
컨텍스트 스위치가 발생할때는 모두가 상태값 저장을 대기하고 있기때문에 시스템은 유용한 일을 하지 못해. 순수한 오버헤드. 프로세스를 시스템 콜이나 인터럽트로 변경해주는 일은 중요한 일이지만 순수한 오버헤드가 증가하므로 적절하게 사용할 줄 알아야 한다.
이 그림에서 빨간네모가 context switch가 일어난 곳을 나타냄
interrupt 또는 system call이 발생하여 context값을 저장하고 다른 프로세스로 교환하고 있으니까
갑자기 중요한 이야기가 늘어난 느낌.. 분명 배웠던건데 이렇게 기억이 안난다니.. 프로세스 2탄은 다음에~
https://bit.ly/3FVdhDa
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.