Ocean_
꾸준한 프로그래밍
Ocean_
전체 방문자
오늘
어제
  • 분류 전체보기 (174)
    • About Me (4)
    • 우아한테크코스 (27)
    • C & LINUX (50)
    • Operating System (12)
    • Database (25)
    • Computer Vision (0)
    • Problem Solving (0)
      • Programmers (0)
      • BOJ (0)
    • 코코코딩공부 (44)
      • Spring (12)
      • JAVA (14)
      • 디자인 패턴 (4)
      • 책 읽기 (4)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 우아한테크코스
  • 데이터 조작어
  • 원시값 포장
  • 백준
  • 우아한형제들
  • SIGINT
  • 정규화
  • 우테코 체스
  • 운영체제
  • Linux
  • 우테코5기
  • signal
  • 인덱스
  • C++
  • Spring
  • OperatingSystem
  • 우테코
  • BOJ
  • DB
  • 자바
  • Operating System
  • 1259
  • 우아한테크코스5기
  • 트랜잭션
  • bean
  • 프로세스
  • 리눅스
  • C
  • 블랙잭
  • OS

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Ocean_

꾸준한 프로그래밍

[Operating System] 프로세스
Operating System

[Operating System] 프로세스

2022. 12. 19. 15:40

Process / Program

프로그램

  • disk에 위치한다.

프로세스

  • disk에 위치한 program file을 메모리에 올린 것이다. runnable program.

프로세스의 구성

  • 프로세스는 기본적으로 메모리에 위치한다.
  • Stack, Heap, Data, code 영역으로 구분된다.
    • 0번지는 stack의 처음이며, 끝은 code의 끝이다.
  • process 는 memory 외에도 register도 있다.
    • program counter, stack pointer 등이 있다.
    • pc는 다음 실행 명령어 가리키며
    • sp 는 stack내의 특정 공간 위치 저장해준다

프로세스 생성

  • fork와 같은 시스템콜을 사용해 프로세스를 생성한다.
  • 프로세스 생성 = 프로그램을 메모리로 load 하는 작업 (프로세스의 주소공간으로 load)
    • load : 디스크 상 프로그램을 메모리로 가져와 프로세스 주소공간상에서 읽는 것
  • DISK IO는 느리기 때문에 일부분을 load한 뒤 나머지를 load한다.
  • Stack - 지역변수, 함수 파라메터, 리턴주소 등이 저장된다.
  • Heap - 동적할당 , malloc, free
  • OS는 그사이에 I/O 셋업, 다르 초기화 작업 진행
  • main()에서 프로그램 시작. OS는 CPU제어권을 새로 생성된 프로세스 에게 줌.

프로세스 상태

  • 프로세스는 여러 상태를 갖게 된다.
  • OS는 한번에 하나의 프로세스를 실행하는 것이 아니라 여러 프로세스 짧은 간격으로 실행
  • 실행중인 프로세스 외의 다른 여러 상태를 정의해야함.

2가지 상태

  • 수행 / 비수행 두단계로 process 상태를 나눌 수 있다.
  • Running(수행)은 프로그램 일부 / 전부가 메모리에 올라갔다는 뜻이며 나머지 프로세스는 not running 비수행이다.
  • 이후 Time Quntum , interrupt, disk I/O 등 전환 시기가 오면 다음 프로세스를 선택한다.

3가지 상태

  • 위에서 not running 상태를 ready/blocked 상태로 나눈다.
  • Running 실행
    • 프로세스가 처리기 상에서 실행
  • Ready 준비
    • 프로세스가 실행 준비(메모리에 로딩된 상태)이지만 아직 실행되지 않음
  • Blocked 블럭 = Sleep = 수면
    • 프로세스가 특정 작업을 수행
    • disk I/O 요청시 블럭 상태가 됨.

5가지 상태

  • 생성과 종료 상태가 추가된 것이다.
  • I/O 가 끝나는 것이 사건이다.

9가지 상태

  • 스왑 된 상태 - 메모리 부족해서 디스크로 일부 옮김aa
  • 프로세스 생성시 메모리 여유가 충분하면 바로 Ready 상태로 갈 수 있지만 그렇지 않다면 스왑된 준비상태로 간다.
  • 스왑된 준비 - 프로그램 파일이 메모리가 아닌 DISK 내의 스왑 공간으로 이동된 경우를 뜻한다.
  • 스왑 상태에서는 SwapIn(메모리로 이동해 Ready 상태가 되는 것)밖에 없다.
  • 메모리 준비 상태에서는 Kernel mode로 가거나 User mode로 갈 수 있다.
  • User mode로 가는 방법은 2가지가 있는데
    • Kernel mode 를 거쳐가거나
    • preemption을 해 거쳐가는 것이다.
  • preemption은 선점으로 다르프로세스가 차지하고 있던 cpu를 빼앗는 것이다.
  • user mode에서 I/O를 시작하거나 시스템콜 호출, 인터럽트가 발생하면 커널모드로 이동한다.
  • 커널모드에서 수행이 끝나면 다시 선점을 통해 유저모드로 돌아가거나 IO시 메모리상의 수면 상태로 넘어갈 수있다.
  • 메모리 상의 수면 상태에서는 메모리에 여유가 사라지면 해당 프로세스는 스왑상태로 넘어갈 수 있다.
  • 커널 모드에서는 EXIT호출을 위해 ZOMBIE상태가 될 수 있다.

Context

  • 문맥은 크게 System 문맥, 메모리 문맥, hw(레지스터) 문맥이 있다.

Context Switching 문맥교환

  • 어떤 프로세스가 인터럽트 될 때 문맥 데이터의 현재 값이 해당 제어블록의 적절한 필드에 저장되고, 그 프로세스 상태가 블록, 준비 등 과 같은 값으로 변경. OS는 다르프로세스를 선택하여 수행상태로 만들고 그 프로세스의 프로세스카운터와 문맥데이터를 레지스터에 적재하여 새 프로세스 수행

'Operating System' 카테고리의 다른 글

[Operating System] 공평한 스케줄러  (0) 2022.12.28
[Operating System] MLFQ Multi-level Feedback Queue Scheduling  (2) 2022.12.28
[Operating System] 스케줄링  (0) 2022.12.19
[Operating System] 프로세스 실행  (0) 2022.12.19
[Operating System] 운영체제란?  (0) 2022.12.19
    'Operating System' 카테고리의 다른 글
    • [Operating System] MLFQ Multi-level Feedback Queue Scheduling
    • [Operating System] 스케줄링
    • [Operating System] 프로세스 실행
    • [Operating System] 운영체제란?
    Ocean_
    Ocean_
    dongVeloper

    티스토리툴바