![](https://velog.velcdn.com/images/dong_min_god/post/599eecf9-0d96-493a-97ad-b0811a979c1a/image.png)
- 실제로 cpu는 물리적으로 하나밖에 없다
- task마다 가상의 cpu가 한 개씩 있다고 가정한다.
- 가상의 cpu마다 stack memory를 할당받는다.
- stack memory는 task마다 다른 size로 할당해줄 수 있다.
![](https://velog.velcdn.com/images/dong_min_god/post/723d0086-7bda-46fb-9075-8e5eaff2f977/image.png)
- Multitask는 cpu가 하나가 존재할 때 동시 동작하는 것이 아니라 시간을 분할해서 개별적인 task를 실행할 수 있도록 해준다.
![](https://velog.velcdn.com/images/dong_min_god/post/bcdcc60d-98c3-473d-81ec-bb224fb30003/image.png)
- task간의 통신(IPC)
- task a와 b는 Inter Process Communication을 통해 정보를 주고받을 수 있다.
![](https://velog.velcdn.com/images/dong_min_god/post/0975e139-f165-4e14-ac2d-5ada04151831/image.png)
- Multitasking 환경에서 kernel은 실행 중에 상태를 계속 변경한다.
- running, ready, blocked 상태 중의 하나에 상시 위치한다.
- running(execute) / ready, blocked(Not execute)
- ready는 실행될 예정이지만 아직 자기 차례가 오지 않은 task
- blocked는 잠자고 있는 상태(sleep,waiting)