아래 내용들은 양희재 교수님의 운영체제 강의를 듣고 정리한 내용입니다.
쓰레드 (Thread)
예제: 자바 쓰레드
주요 메소드
- public void run() // 새로운 맥이 흐르는 곳 (c에서 메인문 같은거)
- void start() // 쓰레드 시작 요청
- void join() // 쓰레드가 마치기를 기다림
- static void sleep() // 쓰레드 잠자기
프로세스 동기화
Process Synchronization
- cf. Thread synchronization
- 예전엔 프로세스 단위로 동기화 했지만 현재는 쓰레드 개념으로 동기화 하는 경우가 더 많다.
- Concurrent access to shared data may result in data inconsistency
- Orderly execution of cooperating processes so that data
consistency is maintained
- 프로세스 동기화란, 서로 영향을 주는 프로세스간에 순서를 잘 정해주어서 데이터의 일관성을 유지할수 있도록하는것.
동기화 Example (BankAccount Problem (은행계좌문제))
- 부모님은 은행계좌에 입금; 자녀는 출금
- 입금(deposit)과 출금(withdraw) 은 독립적으로 일어난다.
- 같은 계좌에 입금 작업을 하고 있는데 동시에 출금 작업을 하게되면 잔액 데이터가 손상될수 도 있다.
- 정확한 이유와 해결볍은 다음시간에 알아보자.
Independent vs Cooperating
- Independent(독립) : p1프로세스에 다른 프로세스는 아무런 영향도 안 끼치면
- Cooperating(영향) : p1프로세스에 다른 p2프로세스의 일이 p1프로세스에 영향을 미치면 cooperating
- Cooperating process: one that can affect or be affected by other processes executed in the system
cooperating의 예제
- 프로세스간 통신: 전자우편(메일을 받는 프로세스 메일을 보내는 프로세스가 있음. 메세지를 서로공유하면서 영향을 받음), 파일 전송
- 프로세스간 자원 공유: 메모리 상의 자료들, 데이터베이스 등
- 명절 기차표 예약, 대학 온라인 수강신청, 실시간 주식거래(서버의 데이터 베이스는 하나인데, 여러 사람들이 서버에 접속해서 기차표를 살려고하면, 모두 db에 (또는 공통자원) 영향을 미치면 cooperating임으로 cooperating작업이 많이 일어남.)