정보처리기사 필기 준비하며 정리한 내용입니다.
📌프로세스
실행중인 프로그램
메모리 상의 프로세스 영역 4가지
- 코드 영역 : 코드가 저장됨
- 데이터 영역 : 전역 변수, 정적 변수가 저장됨
- 스택 영역 : 지역 변수, 함수의 매개 변수가 저장된다
- 힙 영역 : 동적 할당 (프로그래머가 할당)
프로세스 상태 전이
생성 → 준비ready —Dispatch→ 실행Run→종료
- 용어
- I/O처리 필요해서 실행 중단시키면 Wait대기상태로 감—Wake Up→준비→실행
- 준비 : 대기큐에서 프로세서 할당 기다리는 상태
- Spooling : I/O 데이터를 직접 입출력장치에 보내지 않고 모아뒀다가 한꺼번에 보내려고 저장해놓는 것
스레드Thread
- 특징
- 프로그램은 하나 이상의 프로세스를 가진다
- 하나의 프로세스는 반드시 하나 이상의 스레드를 갖는다
- 경량 프로세스라고도 한다
- 스택 영역만 별도로 할당받고 부모 프로세스의 코드, 데이터, 힙영역은 공유한다.
- 프로그램은 하나 이상의 프로세스를 가진다
- 분류
- 사용자 수준의 스레드
- 사용자가 만든. 속도는 빠름. 구현은 어렵다
- 커널 수준의 스레드
- 운영체제의 커널에 의해 운용. 구현 쉬움. 속도 느리다.
- 사용자 수준의 스레드
문맥 교환 Context Switching ⭐
- 하나의 프로세스가 CPU사용중인 상태
- 다르 프로세스가 CPU 사용하도록 하기 위해 이전의프로세스 상태를 PCB에 보관
- 또 다르 프로세스의 정보를 PCB에서 얻어 레지스터에 적재하는 과정
- 다르 프로세스가 CPU 사용하도록 하기 위해 이전의프로세스 상태를 PCB에 보관
PCB process control block 프로세스 제어 블록 ⭐
운영체제가 프로세스에 대한 정보를 저장해 놓는 공간
이것 덕분에 컨텍스트 스위칭이 가능하다
- PCB에 저장되는 정보
- 프로세스 현재 상태
- 포인터
- 고유 식별자
- 스케줄링, 프로세스 우선순위
- CPU 레지스터 정보
- 주기억장치 관리 정보
- IO 상태정보
- 계정정보 (CPU사용시간, 실제사용시간, 한정된시간)
📌스케줄링
- 어떤 프로세스를 먼저 처리할지 순서 정하는 것.
- Ready Queue 준비 큐에 있는 프로세스 중에서.
- 목적
- 공평성
- 효율성
- 안정성
- 반응 시간 보장
- 무한 연기 방지 (기아 현상 방지)
성능 척도
- 프로세서 차원 : CPU
- CPU사용률
- 처리량 Throughput
- 프로세스 차원 : 시간
- 응답시간
- 대기시간
- 반환시간
스케줄링 기법
- 선점형 스케줄링
- 운영체제의 강력한 권한
- 오버헤드 많이 발생. 잦은 문맥 교환 때문
- 종류 ⭐
- 라운드로빈
- 시간 단위 Slice 정해서 순서대로. 공정.
- SRT Shortest Remaing TIme
- SJF의 선점형 버전
- 남은 실행 시간이 가장 짧으면 먼저 할당
- 다단계 큐 : 우선순위
- 상위 준비 상태 큐에 있는 거 먼저 (하위 실행 도중이라도)
- 다단계 피드백 큐 : 시간 할당
- 할당된 시간 끝나면 다음 단계의 준비큐로 이동
- 가장 하위큐는 라운드 로빈
- 라운드로빈
- 운영체제의 강력한 권한
- 비선점형 스케줄링
- 프로세스의 CPU 점유를 빼앗을 수 없다
- 순서대로 처리되는 공정성
- 응답시간 예상 가능
- 종류
- FCFS First Come First Service
- 먼저 도착한 거 먼저
- 긴 게 먼저 도착하면 효율성이 떨어진다
- 가장 짧은 반환시간은 가장 짧은 것부터 실행했을 때
- 가장 긴 반환시간은 가장 긴 것부터 실행했을 때
- SJF Shortest Job First
- 실행시간 짧은 거 먼저
- 반환시간=대기시간+실행시간
- HRN Highest Response Ratio Next
- 오래 기다린 거 먼저
- 우선순위 = (대기시간+실행시간) / 실행시간 ⭐
- 우선순위 Priority
- vmfhtptmakek dntjstnsdnl qndu
- 기한부 Deadline
- 일정한 시간 주고 그 시간 안에 완료하도록 함.
- 못하면 제거되거나 처음부터 다시 실행됨
- 일정한 시간 주고 그 시간 안에 완료하도록 함.
- FCFS First Come First Service
- 프로세스의 CPU 점유를 빼앗을 수 없다
📌병행 프로세스
병행 프로세스 문제 해결책
- 임계구역
- 한 순간에는 하나의 프로세스에 의해서만 사용되도록 하는 영역
- 상호배제 기법
- 한 프로세스가 사용하고 있으면 다른 프로세스 사용 못하도록 배제
- 데커 알고리즘
- 피터슨 알고리즘
- 다익스트라 알고리즘
- 램포트의 베이커리 알고리즘
- 한 프로세스가 사용하고 있으면 다른 프로세스 사용 못하도록 배제
- 동기화 기법
- 스레드들에게 처리권한 주거나 순서 조정해주는 기법
- 세마포어
- 제어 신호 전달 다익스트라, P, V, 계수, 이진
- 모니터
- 프로그래밍 언어 수준에서 동시성 제어
- 상호 배제 기법을 프로그램 단에서 구현한 것
- 세마포어
- 스레드들에게 처리권한 주거나 순서 조정해주는 기법
교착상태
- 무한정 기다리는 현상
- 발생 조건
- 상호 배제
- 점유와 대기 : 자원 점유하면서 할당된 자원 추가로 요구하며 대기
- 비선점
- 환형 대기 : 각 프로세스가 순차적으로 다음 프로세스가 요구하는 자원 가지고 있음
- 해결 방법
- 예방
- 회피 : 은행원 알고리즘
- 발견 : 점검
- 회복
📌디스크 스케줄링
- 효율적인 데이터 액세스
- 하드디스크 검색으로 낭비되는 시간 최소화
종류
- FCFS 스케줄링
- 요청 들어온 차례로 처리
- 단순 공평 비효율
- SSTF Shortest Seek Time First
- 헤드에서 가장 가까운 트랙 먼저
- SCAN
- 헤드 진행방향 요청 처리
- 엘리베이터 기법
- 진행되는 과정에서 들어오는 요청도 처리
- (맨 끝까지 감)
- 헤드 진행방향 요청 처리
- C-SCAN
- SCAN의 변형. 균등.
- 항상 한쪽 방향에서 반대방향으로 진행하며 트랙 요청 처리
- 진행 과정에서 들어온 요청 처리 안함
- 처리할 요청이 없어도 무조건 끝까지 헤드 이동
- SCAN의 변형. 균등.
- LOOK
- SCAN 기반
- 진행 방향의 마지막 요청 처리 후 반대 방향으로 처리함
- (맨 끝까지 안감)
- 진행 방향의 마지막 요청 처리 후 반대 방향으로 처리함
- SCAN 기반
- C-LOOK
- C-SCAN 기반
- 한번에 끝까지 감.
- 한쪽 방향의 요청만 처리함
- C-SCAN 기반
- N-STEP SCAN
- SCAN 기반
- 시작 전 대기하는 요청 우선적으로 처리
- 과정 중 들어오는 요청은 모아서 이후에 반대방향으로 진행할 때 서비스
- SCAN 기반
- 에션바흐
- 부하가 매우 큰 항공 예약 시스템을 위해 개발
📌환경변수
- 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임
- OS에서 프로세스들을 생성할 때 참조하는 변수
- UNIX/Linux 환경변수
- env, set, printenv 명령어들로 환경변수와 그에 따른 모든 값을 볼 수 있다.
- export 명령을 이용하여 사용자 환경 변수를 전역 변수로 설정할 수 있다.
📌로그 파일
- 로그 : 시스템의 모든 기록을 담고있는 데이터
- 리눅스 로그 종류
- xferlog : ftp 로그 파일
- wtmp : 시스템에 전체 로그인 기록 저장
- utmp : 시스템에 현재 로그인 사용자에 대한 로그인 기록이 저장
- last log 각 계정들의 가장 최근 로그인 기록
- btmp : 로그인 실패 정보