📖
Mini's Today I Learned
  • Today I Learned
  • 💻Computer Science
    • 🧱Computer Science
      • Computer Architecture
    • 🦕OperatingSystem
      • System Structure
      • 01. 운영체제 역할
      • 02. History로 이해하는 운영체제
      • 03. 운영체제 구조
      • 04. 프로세스 스케쥴링
      • 05. 스케쥴링 알고리즘
      • 06. 프로세스 상태와 스케쥴러
      • 07. 인터럽트
      • 08. 프로세스와 컨텍스트 스위칭
      • 09. 프로세스간 커뮤니케이션(IPC 기법)
      • 10. Thread(스레드)
      • 11. 가상메모리 (Virtual Memory System)
      • 12. 파일시스템 이해
      • 13. 부팅의 이해
      • 14. 가상머신(Virtual Machine)
  • 📈Database
    • MySQL CLI (Frequently used)
    • 1-Tier, 2Tier, 3Tier
    • Basic SQL
    • Built in function
    • Sub Query
    • View
    • Stored Program
    • index
    • Normalization(정규화)
    • Transaction
    • Transaction
  • 🌐 Network
    • 🔌 TCP&IP Basic
      • 01 TCP/IP 맛보기
      • 02 TCP/IP 개요
      • 03 통신 서비스와 프로토콜
      • 04 애플리케이션 계층
      • 05 트렌스포트 계층
      • 06 네트워크계층
      • 07 데이터 계층과 물리계층
      • 08 라우팅
      • 09 보안
      • 10 HTTP 프로토콜
    • 🐿️HTTP 완벽 가이드 요약
      • 1. HTTP: 웹의 기초
      • 2. URL 과 리소스
      • 3. HTTP Message
      • 4. Connection Management
      • 5. Overview of web server architectures
      • 6. Proxies
      • 7.Caching
      • 8. Integration Points: Gateways, Tunnels, and Relays
      • 9. Web Robots
      • 10. HTTP/2.0
      • 11. Client Identification and Cookies
      • 12. Basic Authentication
      • 13. Digest Authentication
      • 14. Secure HTTP
      • 15. Entities and Encodings
      • 16. Internationalization
      • 17. Content Negotiation and Transcoding
      • 18. Web Hosting
  • 🏴Language
    • ☕JAVA
      • Comparable vs Comparator
  • 🛠️ Framework
  • 🧩Design Pattern
    • 객체 지향 설계 원칙 (SOLID)
    • Design Pattern 개요
    • Template method
    • Singleton
  • 🐥FrontEnd
    • HTML&CSS
      • 01 Intro
      • 02 HTML Basic
      • 03 Content Section
      • 04 Block and Inline Elements
      • 05 Text Contents
      • 06 Inline Elements
      • 07 Multi Media
      • 08 Table&Form&etc
      • 09 Global Attribute & etc
      • 10 css basic
      • 11 css config
      • 12 css unit
      • 13 Box Model
      • 14 Font & Text
      • 15 Float(띄움) & Position
      • 16 Background
      • 17 Transitions & Transforms
      • 18 Animation & Multi Columns(다단)
      • 19 Flex
      • 20 Grid
    • Sass(SCSS)
    • TypeScript
    • Webpack Introduction
      • 웹팩의 기본 구조
      • CommonJS
      • ESM
      • WebpackConfig
        • 1. Handlebars
        • 2. Caching
        • 3. Minification & Mangling
        • 4. Mode(Development mode & Production Mode)
        • 5. 이미지 파일 모듈로 다루어보기(file-loader)
        • 6. 이미지 파일 모듈로 다루어보기(url-loader)
        • 7. SASS Loader
        • 8. Post CSS
        • 9. BLOWSERS LIST
        • 10. Stylelint
        • 11. Babel
      • Webpack-Practice
    • ETC
      • GIT
      • MarkDown
Powered by GitBook
On this page

Was this helpful?

  1. Computer Science
  2. 🦕OperatingSystem

08. 프로세스와 컨텍스트 스위칭

  • 프로세스 구조(영역)

    • STACK

      • 함수

        • 함수를 위해 동적으로 계속 처리해야하는 공간이 필요함.

        • return address(주소)값을 스택에 저장해둠

        • 인자, 지역변수들을 차례로 넣고, return address로 함수 결과값을 반환함

    • HEAP

      • 대표적인 예(C 에서 malloc())

      • 코드 내에서, 동적으로 사용할 데이터들 저장

      • 동적으로 메모리를 생성함

      • malloc 함수 내부에 메모리 크기 지정, (통상적으로 32bit 할당)

      • (사용후 free로 할당 해지해야함)

    • DATA

      • 변수

        • 메모리의 특정 공간을 만들어서 DATA를 넣고 뺌

      • 영역(2가지)

        • BSS

          • 초기화되지 않은 전역변수

        • DATA

          • 초기값이 있는 전역변수

    • CODE

      • 컴파일된 소스코드 저장

      • code가 컴파일 된다는 것은 0과1로 이루어진 기계어로 변환된다는 뜻(=바이너리)

      • 읽기 전용

  • 프로세스 구조와 컴퓨터 구조

    • 주요 레지스터중 PC(Program Counter) + SP(Stack Pointer)

      • PC: 다음 명령어의 위치를 가리키는 포인터[명령어는 순차처리 되므로, 한 명령어가 처리되면 자동으로 값이 증가됨]

      • SP: LIFO, 현재 스택의 위치 정보를 지니는 포인터(이 값을 저장하는 레지스터를 SP레지스터)

      • EBP: 함수가 호출된 최상단 스택포인터를 가지고 있음.(G함수 호출에 문제가 생겼을 때, 이 위치를 찾아(트래킹) 감.)

      • EAX: 함수 내부 동작이 끝나서 반환한 값이 저장되는 레지스터

      • FP: 함수 호출 종료시 스택프레임의 반환을 위해 이전 스택 포인터의 정보를 지니는 포인터

  • 프로세스와 컨텍스트 스위칭

    • context switching(문맥교환)

      • CPU에 실행할 프로세스를 교체하는 기술

        • 실행 중지할 프로세스 정보(PC, SP등) 를 해당 프로세스의 PCB에 업데이트해서 메인메모리에 저장.(프로세스 상태는 ready혹은 block상태로)

        • 다음 실행할 프로세스 정보를 메인메모리에 있는 해당 PCB(PC, SP등)를 CPU에 넣고 실행(running 상태, 해당 PC의 위치부터 실행) > dispatch: ready => running상태로

      • 실제로는 굉장히 짧은 시간(ms)단위로 컨텍스트 스위칭이 빈번하게 일어남

      • C언어가 아니라 어셈블리어로 작성되어있다.

      참고: 컴파일을 하는 시간을 줄이기 위해, 어셈블리어 작성. 어셈블리어는 이식성은 떨어지지만, 속도측면에서는 빠르기 때문에 사용 이식성: CPU아키텍쳐에 따라 기존 코드 재작성하는 것

    • PCB: (Process Control Block, Process Context Block)

      • Process ID

      • Register 값(PC, SP)

      • Scheduling Info(Process State)

      • Memory Info (메모리사이즈 limit)

      • 등등 (프로세스의 상태를 저장) > 프로세스가 실행중인 상태를 캡쳐/구조화 해서 저장

Previous07. 인터럽트Next09. 프로세스간 커뮤니케이션(IPC 기법)

Last updated 3 years ago

Was this helpful?

💻