10.프로세스 동기화의 중요성, 은행계좌 문제

1. 쓰레드란?

프로그램 내부의 흐름, 맥

맥이 하나만 있는 프로그램 : 싱글쓰레드
여러개있는것: 멀티(다중)쓰레드

쓰레드가 여러개가 빠르게 동시에(왔다갔다하면서) 실행됨. 우리는 CPU하나임을 가정하고 공부하기 때문에

1.1 쓰레드 구조

프로세스의 메모리 공간 공유 : (code, data)
프로세스의 자원 공유 : (file, i/o, …)
비공유: 개별적인 PC, SP, registers, stack

운영체제의 프로세스 관리부서에서 중요한것은 프로세스 동기화 또는 쓰레드 동기화이다.

프로세스는 크게 두가지로 나뉜다.

Independent process : p1, p2가 영향이 없다
Cooperating process : p1, p2가 영향을 주던지 받던지 한다. 이런경우가 훨씬 많다.
프로세스간 통신: 전자우편, 파일 전송
프로세스간 자원 공유: 메모리 상의 자료들, 데이터베이스 등
명절 기차표 예약, 대학 온라인 수강신청, 실시간 주식거래

2. 프로세스(쓰레드) 동기화

공통데이터에 접근하는것은 문제가 발생할 수 있다. (공유되는 프로세스가 동시에 접근할 때.)
동기화가 제대로 이뤄지지 않으면 똑같은 자리에 두명이상이 배정된다던가 하는 문제가 생긴다.

프로세스간에 순서를 잘 지정해서 이상한 상태에 빠지지 않도록 하여 데이터의 일관성을 유지

2.1 BankAccount Problem (은행계좌문제)

부모님은 은행계좌에 입금; 자녀는 출금
입금(deposit)과 출금(withdraw) 은 독립적으로 일어난다.

Share