운영체제(OS, Operating System)
는 컴퓨터 시스템의 자원들을 효율적으로 관리하며,
사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는
여러 프로그램의 모임이다.
운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는
시스템 소프트웨어 의 일종으로, 다른 응용 프로그램이 유용한 작업을 할 수 있도록
환경을 제공한다.
대표적인 컴퓨터 운영체제
운영체제 안에서 실행되는 프로그램으로 데이터 및 코드가
메모리에 적재되어 동작하는 것
- 프로세스는 반드시 하나 이상의 Thread(스레드) 로 구성되어진다.
- 윈도우에 실행되는 모든 프로그램을 프로세스라고 한다.
스레드를 한개만 사용하는 것을 Single Thread(싱글 스레드)라고 하고
여러 개의 스레드를 사용하는 것을 Multi Thread(멀티 스레드)라고 한다.
운영체제가 CPU에 시간을 할당하는 기본단위
운영체제가 명령어를 실행하기 위한 스케줄링 단위
싱글 스레드가 한 가지의 작업을 수행하는 과정에서 그 과정 중에서는 프로그램이 멈춘 것처럼 보일 것이다.
멀티 스레드일 경우 한 가지의 작업을 수행하는 과정 중에서
여러 가지 기능을 추가해줄 수 있다.
스레드는 이미 프로세스 안에 생성되는 것이기에 새로운 프로세스를 생성하는 것보다
훨씬 더 적은 메모리를 사용할 수 있다.
프로세스 안에 있는 스레드에서 문제가 생길 경우 프로그램이 멈추게 된다.
여러 스레드 중에서 하나라도 문제가 있으면
프로그램이 멈추게 되어서 안전성이 떨어진다.
스레드를 골라서 cpu한테 어떠한 작업을 실행시키도록 명령.
Thread 기능을 사용하기 위해서는
using Threading;
선언이 필요하다.
자동적으로 유니티는 내부에 스레드가 있다[게임로직 스레드(Thread)]
스레드 상태표 1 설명
- Unstarted : 스레드 생성 후 Start() 메서드가 실행되기 전 상태
- Running : 스레드가 시작하여 동작 중인 상태
스레드 상태표 2 설명
- Suspended : 스레드 일시 중단 상태, Thread.Resume() 메서드 호출까지 대기
스레드 상태표 3 설명
- WaitSleepJoin : 스레드 일시 중단 상태, 특종 조건까지만 대기 스레드 일시 중단 상태, 특종 조건까지만 대기
- Monitor.Wait() : 현재 스레드를 대기 상태로 만들고 모니터를 해제
- 특정 조건이 충족할 때까지 대기
- Monitor.Pulse() : 대기 중인 스레드 중 하나를 깨움
- 조건이 변경되었음을 알린다.
- Monitor.PulseAll() : 대기 중인 모든 스레드를 깨움
- 모든 대기 스레드에게 조건 변경을 알린다.
스레드 상태표 4 설명
- Thread.Abort() : 메서드 실행 순간 조금 더 처리할 작업을 실행한 후 종료한다.
[ ! ] 이것은 강제 종료이기에 위험할 수도 있다. 조심할 것.
스레드 상태표 5 설명
포그라운드 스레드(Foreground Thread)
- 포그라운드 스레드는 프로세스 수명에 영향을 끼친다.
- 진행중 중간에 죽어버리면 모든 포그라운드 스레드가 중간에 종료된다. [ 해당 프로세스가 꺼지게 된다. ]
- 중간에 포그라운드 스레드가 다 종료되버리면 백그라운드 스레드와 상관 없이 프로그램이 종료된다.
백그라운드 스레드(Background Thread)- 백그라운드 스레드는 몇개가 됬건 멈춰도 프로세스 수명에는 영향이 없다.
- 포그라운드 스레드만 돌아가면 상관 X