foreground process: 앱과같이 보이는 프로세스들
background process: 사용자가 보지 못하는 뒤편에서 실행되는 프로세스
운영체제는 빠르게 ㅁ번갈아 수행되는 프로세스의 실행 순서를 관리하고, 프로세스에 cpu를 비롯한 자원을 배분하는데 이때 커널 영역에 있는 pcb를이용해 특정 프로세스를 식별하고 해당 프로세스를 처리하는데 필요한 정보를 판단한다.
하나의 프로세스에서 다른 프로세스로 넘어갈 때 기존 프로세스의 중간정보를 PCB에 백업하고 새로운 프로세스의 문맥을 PCB 로 부터 복구하여 새로운 프로세스를 실행하는것
정적 할당영역
동적 할당 영역
힙 영역: 프로그래머가 직접 할당할 수 있는 저장공간 (해당공간 반환하지 않으면 메모리 누수가 일어남)
스택영역: 매개변수 지역변수와 같이 잠깐쓰고 버릴 값들이 저장되는 공간
프로세스는 실행도중 시스템 호출을 통해 다른 프로세스를 생성할 수 있다
부모 프로세스 fork 통해 복사본 자식프로세스로생성 -> 자식 프로세스 exec 통해 메모리공간 다른프로그램으로 교체
스레드: 프로세스 내의 실행 흐름 단위, 스레드는 프로세스 내에서 각기 다른 스레드 ID, 레지스터 값, 스택 으로 구성되어 있어 각기 다른 코드를 실행 할 수 있다.
스레드들은 실행에 필요한 최소한의 정보 를 유지한 채 프로세스 자원을 공유하며 실행된다.
머ㅓㄹ티프로세스 ㅁ멀티스레드
자원공유x(메모리 낭비) 자원공유0(협력과 통신에 유리, 메모리효율 0 but 하나의 스레드에 문제가 생기면 프로세스 전체에 문제)