[운영체제] 10. 쓰레드

이호용·2021년 4월 16일
0

운영체제

목록 보기
9/12

아래 내용들은 양희재 교수님의 운영체제 강의를 듣고 정리한 내용입니다.

쓰레드 (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작업이 많이 일어남.)

0개의 댓글