분류 전체보기 (47) 썸네일형 리스트형 [OS] 07. Synchronization Tools Background 프로세스는 동시에 실행 가능 / 어느 시점에서나 인터럽트 가능 / 실행이 부분적으로 완료될 수 있음 Shared Data에 대한 동시 접근은 데이터 일관성을 무너지게 할 수 있음 (Data inconsistency) 데이터 일관성 유지는 서로 협력하는 프로세스의 순서 있는 실행을 보장하기 위한 메커니즘이 요구됨 모든 버퍼를 채우는 소비자-생산자 문제 : 전체 버퍼 수를 추적하는 integer 카운터를 사용 초기에 카운터는 0으로 세팅 / 생산자가 새 아이템을 생산하면 증가, 소비자가 버퍼에서 소비하면 감소 경쟁 조건 (Race Condition) 생산자와 소비자 작업이 올바르게 작성되어도 이들이 동시에 수행되면 바르게 동작하지 않을 수 있음 counter가 5일 때, counter++.. [OS] 06. Threads & Concurrency Multithreading Multithreaded Architecture 대부분의 현대 애플리케이션은 멀티스레드임 스레드는 애플리케이션 안에서 실행 애플리케이션의 여러 작업은 별도의 스레드에서 실행 가능 화면 업데이트 / 데이터 가져오기(Fetch) / 스펠(Spell) 체크 / 네트워크 요청 응답 등 프로세스 생성은 무거운 작업(heavy-weight)이지만 스레드 생성은 가벼운 작업(light-weight) 스레드는 일부의 레지스터와 스택만 따로 가지고 코드와 데이터는 공유함 코드를 간단하게 할 수 있고 효율성을 높일 수 있음 커널은 일반적으로 멀티스레드로 동작 Multithreading의 장점 Responsiveness 응답성 : 프로세스의 일부가 차단(block)된 상태일 때도 실행을 계속하는 .. [OS] 05. Virtual Memory Background 실행을 위해서는 코드가 메모리에 있어야 하지만, 프로그램의 일부 부분은 드물게 사용됨 (Error code / Unusual code / Large Data Structure) 전체 코드가 동시에 필요하지는 않음 부분적으로 로드된 프로그램의 실행을 고려 프그램은 더 이상 물리 메모리의 제한에 제약을 받지 않음 각 프로그램은 실행 중에 더 적은 메모리를 사용 -> 더 많은 프로그램이 동시에 실행 가능 -> CPU Utilization과 Throughput이 증가 메모리로 프로그램을 로드/스왑하기 위해 필요한 I/O가 감소 -> 사용자 프로그램이 더 빠르게 실행 Virtual Memory 물리 메모리로부터 사용자 논리 메모리를 분리 실행에 필요한 프로그램의 일부 부분만 메모리에 있음 논리.. [OS] 04. Main Memory Background 메모리 : 각각 주소가 할당된 일련의 워드 또는 바이트로 구성 CPU는 PC(Program Counter)가 지시하는 주소에서 다음 명령어를 가져옴 해당 명령어는 필요시, 추가 데이터를 가져오거나 데이터를 메모리로 내보낼 수도 있음 명령어 실행 절차 메모리로부터 하나의 명령어를 가져옴 가져온 명령어를 해독 -> 메모리에서 피연산자를 가져옴 명령어를 실행 / 필요시, 실행 결과를 메모리에 다시 저장 프로그램은 실행되기 위하여 비휘발성 저장장치에서 메모리로 가져와야 함 (프로세스) 메인 메모리와 레지스터는 CPU가 직접적으로 접근할 수 있는 유일한 저장장치 메모리 유닛은 ‘주소+읽기 요청’ 또는 ‘주소+데이터’ 그리고 쓰기 요청만 인식 레지스터 접근은 한 번의 CPU 클럭(or less).. [OS] 03. CPU Scheduling CPU Scheduling 다중 프로그래밍을 통해 CPU의 활용도 향상 가능 CPU burst 또는 I/O burst : 프로세스 실행은 CPU 실행과 I/O 대기의 사이클로 구성 CPU burst 뒤에 I/O burst가 뒤따라옴 / CPU burst 분포는 컴퓨터 시스템의 주요 관심사 Short-term Scheduler는 Ready Queue의 프로세스 중 하나를 선택하고 선택된 프로세스에게 CPU를 할당 CPU Scheduling 결정이 일어나는 경우 프로세스가 Running에서 Waiting으로 전환될 때 프로세스가 Running에서 Ready로 전환될 때 프로세스가 Waiting에서 Ready로 전환될 때 프로세스가 종료될 때 (Terminate) 1, 4의 상황은 비선점적(프로세스 스스로 C.. [OS] 02. Processes Process 프로세스 = 실행 중인 프로그램 Process = Batch system : jobs = Time-shared system : user programs or tasks) 프로그램은 디스크에 저장된 passive entity(exe file)이며 프로세스는 active 프로그램이 메모리에 로딩돼서 실행되면 하나의 프로세스가 됨 하나의 프로그램이 여러 프로세스가 될 수 있음 프로그램의 실행은 마우스 클릭, 명령어 입력, 터치, 음성 등으로 시작 Text Section : 프로그램 코드 현재 활동은 Program counter, Process register를 포함 Stack : 일시적인 데이터 (함수 파라미터, 반환 주소, 지역 변수) - Data : 글로벌 변수, 정적 변수, 상수 Heap .. [OS] 01. Operating System Structures Operating System Services OS는 프로그램 실행을 위한 환경과 프로그램에 대한 서비스를 제공 User Interface 사용자 인터페이스 Program Execution 프로그램 실행 I/O operations 입출력 장치 작동 OS는 사용자에게 도움이 되는 기능을 제공 File-system manipulation 파일 시스템 조작 Communication (IPC) 프로세스 간의 통신 Error detection 오류 검출 OS는 시스템 자체의 효과적인 작동을 위한 기능을 제공 Resource allocation 자원 할당 Accounting 계정 관리 Protection and Security 보호와 보안 OS는 각각의 역할별 / 모듈별로 구현 시스템 콜 (System Call) .. 이전 1 ··· 3 4 5 6 다음