[OS] Lecture 6. Process Synchronization and Mutual Exclusion (1/7) - Introduction

2022. 2. 5. 23:13·OS

다중 프로그래밍 시스템

- 여러 개의 프로세스 존재

- 프로세스 서로 독립적 동작

- 프로세스 끼리 자원을 공유-> 문제 발생 가능성


Synchronization(동기화)

- 프로세스간 통신

- 프로세스간 서로 정보를 공유하는 것

- 프로세스간 서로 동작을 맞추는 것.


Asynchronization(비동기화)

- 프로세스간 서로 어떻게 동작하는지 모름

 

Concurrent(병행적)

- 프로세스 동시에 동작

- 병행 수행 중인 비동기적 프로세스들이 자원을 공유-> 문제 발생 가능성


용어정리

1. Shared data(공유 데이터) or Critical data

여러 프로세스들이 공유하는 데이터

2. Critical section(임계 영역)

공유 데이터(자원)를 접근하는 코드 영역(code segment)

3. Mutual exclusion(상호 배제)

둘 이상 프로세스 동시에 critical section에 진입하는 것을 막는다. 

 

Critical Section(example)

 

기계어 명령(machine instruction)

- Atomicity(원자성): 최소 단위. 더 이상 쪼갤 수 없음.

- Indivisible(분리 불가능)

- 기계어 명령 실행 중  interrupt 받지 않음(Atomicity, Indivisble)

- compiler가 code를 machine instruction로 번역

 

sdata==2가 될까? No!

- race condition: 실행 순서에 따라 결과가 달라짐
- 대안: Mutual Exclusion

 

 

Mutual Exclusion

critical section 실행되는 동안, sdata에 접근하려는 다른 프로세스 진입 막는다. 

 

 

Mutual exclusion methods(primitives)

- primitive: 가장 기본이 되는 연산

- enterCS() primitive: critical section 진입이 가능한지 검사!

- exitCS() primitive: critical section 벗어날 때 후처리 과정. cs 벗어남을 알려줘야 대기하는 프로세스가 들어올 수 있겠지?

 

ME primitives(enterCS(), exitCS()) 만들기 위한 요구사항

- Mutual exclusion: CS에 프로세스 있으면, 다른 프로세스 진입 금지

- Progress(진행?): CS가 비어있으면 진입을 방해하면 안됨!

- Bounded waiting(한정 대기): 무한 대기 X. 유한 시간 내 CS 진입 허용되어야 함. 

 

 

'OS' 카테고리의 다른 글

process와 thread 구성  (0) 2022.02.11
Concurrency vs Parallelism  (0) 2022.02.10
[OS] Lecture 5. Process Scheduling (4/4) - MLQ, MFQ  (0) 2022.02.05
[OS] Lecture 5. Process Scheduling (3/4) - SPN, SRTN, HRRN  (0) 2022.02.05
[OS] Lecture 5. Process Scheduling (2/4) - FCFS, RR  (0) 2022.02.05
'OS' 카테고리의 다른 글
  • process와 thread 구성
  • Concurrency vs Parallelism
  • [OS] Lecture 5. Process Scheduling (4/4) - MLQ, MFQ
  • [OS] Lecture 5. Process Scheduling (3/4) - SPN, SRTN, HRRN
사랑우주인
사랑우주인
  • 사랑우주인
    lovelyAlien
    사랑우주인
  • 전체
    오늘
    어제
  • 글쓰기
    관리
    • 분류 전체보기 (207)
      • Programming (4)
        • Spring (28)
        • Java (46)
        • JPA (2)
        • 디자인 패턴 (5)
        • 개발&아키텍처 (0)
      • Network (12)
      • OS (19)
      • Database (1)
      • Kubernetes (0)
      • Kafka (2)
      • Algorithm (49)
        • BaekJoon (1)
        • Programmers (19)
        • Algorithm (5)
        • Socar (2)
        • LeetCode (19)
      • Interview (2)
      • Issues (2)
      • DotJoin (1)
      • Git (4)
      • 독서 (3)
      • 끄적끄적 (1)
      • 외부활동 (26)
        • 항해플러스 (2)
        • JSCODE 네트워크 (19)
        • JSCODE 자바 (5)
      • SQL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • GitHub
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    OS
    wildcards
    준영속 엔티티
    LinkedList
    lower bounded wildcards
    fcfs
    @JsonProperty
    @JsonNaming
    Thread
    pacific atlantic water flow
    algorithm
    Generic
    socar
    Process
    제네릭
    AuthenticationSuccessHandler
    디자인 패턴
    Reorder List
    JSCode
    트랜잭션
    추상화 클래스
    BFS
    운영체제
    RR
    Oauth2
    minimum number of arrows to burst balloons
    clone graph
    Climbing Stairs
    runner 기법
    rotting oranges
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
사랑우주인
[OS] Lecture 6. Process Synchronization and Mutual Exclusion (1/7) - Introduction

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.