즉, 실행되지 않은 파일! 실행되지 않은 코드 덩어리!프로그램을 "실행"하면 컴퓨터 메모리에 올라가고 "동적" 상태로 바뀌어 "프로세스"가 된다.근데 프로그램이 복잡해지면서 프로세스 하나만으로 프로그램을 실행하기 힘들어졌다.\-> 해결법 : 프로그램을 여러 프로세스로
$$ 동시에 실행되는 건 아니다! ( CPU는 한번에 하나의 프로세스만 실행가능하기 때문 -> 빠르게 Context-Switching이 발생하면 사용자는 빠른 속도 때문에 동시라고 착각!) $$\-> 멀티 프로세스 환경에서 오버헤드가 크기 때문! ( Context-Sw
동기화 객체 : 커널에서 제공하는 객체로서 쓰레드 사용시 문제되는 자원의 공유시 충돌에 대한 해법을 제시!!\-> 실행순서의 동기화 ( 쓰레드 실행순서를 정의하고 반드시 따르도록 하는 것 )\-> 메모리 접근에 대한 동기화 ( 동시접근을 철저히 막는 방법 )\-> 커널
한정적인 메모리를 여러 프로세스가 효율적으로 사용할 수 있도록 다음 실행 시간에 실행할 수 있는 프로세스 중에 하나를 선택하는 역할\-> degree of multiprogramming 제어\-> 디스크와 메모리 사이의 스케줄링 담당\-> 어떤 프로세스에 메모리를 할당
동기 : 데이터의 요청과 결과가 한 자리에서 동시에 일어나는 것ex) 사용자가 데이터를 서버에게 요청한다면 그 서버가 데이터 요청에 따른 응답을 사용자에게 다시 리턴해주기 전까지 사용자는 다른 활동을 할 수 없으며 기다려야만합니다. (+) 설계가 간단하고 직관적
프로그램의 크기는 계속 증가하고 있기에 메모리는 항상 부족하다.프로세스를 메모리에 연속적으로 할당하는 기법할당과 제거를 반복하면 외부 단편화가 발생연속 메모리 할당에서 외부 단편화를 줄이기 위한 할당 방식a. 최초 적합 : 가장 처음 만나는 빈 메모리 공간에 프로세스
사용자 수준 쓰레드 : 쓰레드 라이브러리를 이용하여 작동하는 형태 - 다대일 매핑커널 수준 쓰레드 : 커널(운영체제)에서 지원하는 형태 - 일대일 매핑혼합형 쓰레드 : 둘을 혼합한 형태 - 다대다 매핑쓰레드 패키지를 사용자 영역에 두고 운영체제 커널은 단일 프로세스만을
각 작업에 할당할 수 있는 메모리 공간이 있는데 프로세스가 해당 메모리 공간보다 작을 때 ( 위 그림에서는 10M의 공간이 있는데 7M의 프로세스가 들어온다는 가정) 메모리 공간이 남는다. 이런 남는 공간들은 대부분 공간이 작아 다른 프로세스가 들어가지 못해서 메모리