OS Application Development in WebOS Develop applications in WebOS Recognize the abstract class Application The operating system accepts classes that implement Application, Install the application by calling the install() method Call the uninstall() method ... UImvcOSgwtwebos [OS] 21. Beyond Physical Memory: Mechanisms OS는 Page fault가 발생함에 따라 Page fault handler에 정의된대로 이를 처리(swap in)하는데, 이는 Page table에 해당 페이지가 swap 공간의 어느 위치에 저장되어 있는지 저장해 두었기 때문에 가능한 것이다. 만약 프로세스를 새로 만들거나, 기존의 프로세스가 더 큰 메모리 공간을 요구하는데 메모리에 여유 공간이 남아 있지 않다면 어떤 프로세스의 어떤 페이... OSOS 5. 프로세스 스케줄링 (many short CPU bursts) CPU-bound process (few very long CPU bursts) CPU Scheduler Waiting time(대기 시간) amount of time a process has been waiting in the ready queue ( CPU 사용하기 위해 대기한 시간의 총합) 각 프로세스의 다음번 CPU burst time을 가지... OSOS 4. 프로세스 관리 부모 프로세스가 자식 프로세스 생성 부모와 자식이 모든 자원을 공유하는 모델 자식이 종료될 때까지 부모가 기다리는 모델 fork() 시스템 콜이 새로운 프로세스를 생성 fork 다음에 이어지는 exec() 시스템 콜을 통해 새로운 프로그램을 메모리에 올림 부모가 종료(exit)하는 경우 운영체제는 부모 프로세스가 종료하는 경우 자식이 더 이상 수행되도록 두지 않는다. → 부모 프로세스의 fo... OSOS 6. 프로세스 동기화 →Solution 1 : 한번에 하나의 CPU만이 커널에 들어갈 수 있게 하는 방법 →Solution 2 : 커널 내부에 있는 각 공유 데이터에 접근할 때마다 그 데이터에 대한 lock / unlock을 하는 방법 공유데이터의 동시 접근(concurrent access)은 데이터의 불일치(inconsistency) 문제를 발생시킬 수 있다. n 개의 프로세스가 공유 데이터를 동시에 사용하기를... OSOS [OS] 5. Interlude: Process API 따라서 case 1, 2를 제외한 나머지 가능한 조건은 rc > 0 밖에 없으므로, 자식 프로세스를 성공적으로 생성한 부모 프로세스가 위의 fork statement 다음으로 도달하게 되는 지점이 바로 이 블럭이 된다(17). 그러니까, 여기서 중요한건 실행 순서가 아니라 fork System call이 호출되면 부모 프로세스의 복제본인 자식 프로세스가 생성되고, 그 실행 흐름은 fork의 ... OSOS [OS] 19. Paging: Faster Translations (TLBs) 이때 TLB가 텅 비어 있을 것이므로 TLB Miss가 발생하면, Page Table을 뒤져 VPN이 어떤 PFN에 연결되어 있음을 나타내는 PTE를 받아 TLB에 Insert 해주고, 다시 메모리 액세스 루틴을 실행해 TLB Hit되어 a[0]에 빠르게 접근할 수 있다. Retrial 때문에 같은 일을 두 번 하는 것 같지만, a[1], a[2]은 a[0]이 포함된 VPN 06에 같이 포함... OSOS [OS] 18. Paging: Introduction 이전처럼 수식만을 사용해서 주소 변환을 수행하는게 아니라, 그냥 Page Table에 저장된 {가상 페이지 번호 <-> 물리 프레임 번호} 정보를 사용해서 각각의 가상 주소를 물리 메모리로 주소 변환한다. 이 VPN과 Offset을 실제 물리 메모리 주소로 주소 변환하기 위해 필요한 것이 바로 Page Table이 되는 것이다. PTE를 그냥 {가상 주소 <-> 물리 주소}의 연결 정보라고 ... OSOS 비동기 병행 실행 복수 개의 프로세스나 쓰레드가 동일한 데이터를 동시에 접근하는 경우, 접근 순서에 따라 실행결과가 달라질 수 있는 상황 두 개이상의 쓰레드가 같은 데이터를 동시에 접근할 때 문제점 동시 접근 가능 데이터에 대한 상호배제적 접근 제어 한번에 하나의 쓰레드만 접근 가능 한번에 하나의 쓰레드만 임계 구역에 머물 수 있음 - 두 개 이상의 쓰레드(또는 프로세스)가 동시에 임계 구역에 있어서는 안됨 ... 운영체제CSOSCS 교착상태와 무기한 연기 자원 경쟁 교착 상태 자원 할당 및 요구 관계 선점 자원 비선점 자원 공유 가능 자원 공유 불가 자원 프로세스가 자원을 사용할 수는 있지만, 자원 할당 스케줄링 정책 때문에 계속 대기해야 하는 상황 운영체제의 편중된 자원 할당 정책 때문에 발생 교착상태 배제 무기한 연기 상태 배제 - 오랫동안 대기한 프로세스가 새로 도착하는 다른 모든 프로세스보다 우선순위가 높아져 먼저 자원 확보 한번에 한... 운영체제CSOSCS 프로세서 스케줄링 선점 스케줄링 어떤 프로세스가 프로세서(CPU) 사용을 위해 경쟁할 수 있는지 결정 선점 스케줄링 우선순위가 낮은 프로세스가 우선순위가 높은 프로세스를 대기시킬 가능성 정적 우선순위 방법에 비해 높은 오버헤드 최단작업 우선 스케줄링 우선순위 스케줄링 각 프로세스에 일정 크기의 CPU 시간 할당 선점 스케줄링 최단시간 우선 스케줄링 대기 시간과 처리 시간을 고려하여 우선순위 결정 도착하는 프로... 운영체제CSOSCS [OS] 20. Paging: Smaller Tables 또 하나, Single level page table에서는 MMU에 PTE가 저장되어 있는 Page table의 시작 주소를 PTBR(Page Table Base Register)에 기록해 놓고 Page table을 찾아갔는데, Multi level page table에서는 Page table을 직접 가리키는게 아니라 Page table이 저장된 위치와 사용 여부를 기록하는 Page dire... OSOS [CS][OS] Semaphore s값에 접근하는 프로세스 1개 - binary semaphore s값에 접근하는 프로세스 n개 - counting semaphore s값이 음수 일 때 대기하고 있는 프로세스의 수 = |s값| busy waiting 존재 (s값이 음수이거나 0이면 while문에서 계속 돈다) => CPU 자원 낭비 busy waiting 해결 -> block and wakeup ready queue에서 대기... OSOS 시스템 메모리 크기 구하기(BIOS) 현재까지의 OS 모습이다. 32비트 보호모드에서 IA-32e(64비트)모드로 넘어갈 준비를 하고 있다. 메모리의 크기를 구하는 코드가 책에서는 직접 접근하여 값을 기록하는 식으로 설명이 되있었는데, 이 방법이 마음에 안들었다. cpu-z 같은 프로그램에서는 메모리가 몇번째 슬롯에 꽃혔는지도 알 수 있는데 이런 방법은 너무 별로라고 생각했다. 바이오스 인터럽트로 구하기 가장 간편한 방법이다. ... 운영체제OSOS [OS] 2. Introduction 사용자가 System call을 통해 프로그램 실행, 메모리 액세스 등의 작업을 할 수 있기 때문에 이를 OS가 사용자에게 Standard Library를 제공한다고 표현하기도 한단다. 또 다른 측면에서 보면, OS 위에서 돌아가는 여러 프로그램이 동시에 명령과 데이터에 접근하기도 하고(메모리 공유), 외부 장치에 접근하기 때문에 OS를 Resource manager라 부르기도 한다. 이는 ... OSOS 단편화 해결방법 단 , hole들을 이동할 때 어느 hole을 옮기는 것이 가장 효율적인지 계산하는 작업과 , 메모리에 로드하려는 프로세스를 분리 시켜 로드 한다. 이때 MMU에서는 각 분리된 페이징들의 메모리 주소와 CPU가 보내는 논리적 주소마다 relocate register를 매핑하여 테이블 형태로 관리해주고 맵핑 하여 연속 메모리를 참조하는 것처럼 CPU를 속인다. (맵핑 해주기위해서 많은 relo... OSOS 자바스크립트 메모리 상에서 데이터 관리 한 단위 당 표현 가능한 데이터 개수 : 2개 한 단위 당 표현 가능한 데이터 개수 : 4개 한 단위 당 표현 가능한 데이터 개수 : 16개 이처럼 단위 묶음 체계의 비트 수를 늘리면, 데이터 주소의 개수는 줄어들고, 한 단위 당 표현 가능한 데이터의 개수는 늘어난다. 데이터 주소의 개수가 줄어들수록 검색할 대상이 줄어들기 때문에 검색 시간을 줄어들게 된다. 변수 : 변할 수 있는 데이터 그... JavaScriptOSJavaScript 리눅스 커널 내부구조 부록 #A, Xen 가상화 사용법 (Ubuntu, Windows 10 설치) 앞 장의 글을 읽고 설치를 따라했다면 grub 부트로더가 Xen 으로 부팅을 잡아준다. 위와 같은 화면이 나오면 부트로더가 제대로 Xen 을 잡아줬다는 뜻이다. 필자는 맨 위의 Fedora, with Xen 4.15.2 and Linux 5.16.16-200.fc35.x86_64 로 부팅했다. 컴퓨터가 실행되면 터미널에 아래의 명령어를 입력하여 Xen 이 제대로 실행되는지 확인한다: Ubun... XenubuntuWindows 11linuxOSVirtualizationKernelKernel 스레드의 동기화 문제와 해결법 그 무언가는 상태나 행위, 시간, 속도, 주기, 출현 등이 될 수 있습니다. 어떤 작업을 요청했을 때 그 작업이 종료될 때까지 기다린 후 다음 작업을 수행합니다. 데이터를 주고받는 순서가 중요할 때 사용되며, 요청한 작업만 처리하면 되기 때문에 전체적인 수행 속도는 빠를 수 있습니다. 하지만, 한 작업에 대한 시간이 길어질 경우, 전체 응답이 지연될 수 있습니다. 어떤 작업을 요청했을 때 그... CSOSCS 디스크 스케쥴링 이름에서 알 수 있듯이 가장 먼저 도착한 요청을 가장 먼저 처리한다. 현재 위치에서부터 Seek Time이 가장 짧은 요청을 먼저 처리한다. 현재 53부터 거리가 가장 짧은 요청을 먼저 처리하므로, 총 이동 거리는 236 Cylinders이다. 가령, SSTF은 처음에 53번에서 바로 65번으로 이동하는데, 만약 53번에서 37번으로 이동한 후 SSTF를 수행하면 208 Cylinders의 ... 운영체제OSOS 우분투(Ubuntu) 홈서버 구축기(1) - WOL 설정 영상 처리 같은 고스펙의 PC가 필요 없는 비루한 개발자 입장에서 기존에 돌리던 웹서버와 데이터베이스, 도커 등을 무리 없이 돌릴 수 있을 정도의 PC가 필요했다. 이 정도면 내가 원하는 프로그램들은 무리 없이 돌릴 수 있을 듯하다. 인텔 CPU로도 갈 수 있었지만 요즘 라이젠을 쓰고 싶은 마음이 너무 크고 현재 기준 우분투 역시 AMD CPU를 잘 지원해주고 있기 때문에 고민 없이 선택했다... OSHome serverubuntuwolHome server Linux - (9) : File Directory & Permission 그럼 아래와 같이 결과가 나올 것이다. -rw-r--r-x. 이에 대해서 순서대로 어떠한 의미를 가지고 있는지 이해해보자. r : read 첫번째 "rw-" 는 소유자(user) 의 권한은 읽기와 쓰기 두번째 "r--" 는 그룹(group) 의 권하는 오로지 읽기 세번째 "r-x" 는 기타사용자(other) 는 읽기와 실행 이 가능하다는 권한을 표시해주는 것이다. 각 권한을 변경할 수 있는데... OSOS 24. Synchronization 강의 메모 static으로 선언되어있기 때문에 static int cnt = 0; 에서의 cnt는 thread1, thread2에 의해 사용되는 shared variable 이다. 단지 scope이 thread라는 함수에 한정지어졌을 뿐이다. 85.15 volatile 변수 변수를 선언할 때 앞에 volatile을 붙이면 컴파일러는 해당 변수를 최적화에서 제외하여 항상 메모리에 접근하도록 만듭니다. v... CSAPPOSCSAPP Process Management (OS강의 4주차) 부모 프로세스(Parent process)가 자식 프로세스(children process) 생성 부모와 자식이 모든 자원을 공유하는 모델 부모와 자식은 공존하며 수행되는 모델 자식이 종료(terminate)될 때까지 부모가 기다리는(wait) 모델 fork() 시스템 콜이 새로운 프로세스를 생성 fork 다음에 이어지는 exec() 시스템 콜을 통해 새로운 프로그램을 메모리에 올림 부모가 종... 운영체제OSOS 멀티 Thread프로그래밍에서의 동기화 개념 및 구현 critical section은 두 개 이상의 thread가 동시에 접근할 수 없는 영역 Semaphore를 얻은 Thread만이 Critical Section에 들어갈 수 있으며, 해당 Thread가 Shared Resource를 이용해 작업을 진행 *Java에서는 메서드에 synchronized블럭 또는 synchronized 메서드 로 명시하면, 동기화를 할 수 있게 된다. 즉, 해당 ... cs_studyOSOS
Application Development in WebOS Develop applications in WebOS Recognize the abstract class Application The operating system accepts classes that implement Application, Install the application by calling the install() method Call the uninstall() method ... UImvcOSgwtwebos [OS] 21. Beyond Physical Memory: Mechanisms OS는 Page fault가 발생함에 따라 Page fault handler에 정의된대로 이를 처리(swap in)하는데, 이는 Page table에 해당 페이지가 swap 공간의 어느 위치에 저장되어 있는지 저장해 두었기 때문에 가능한 것이다. 만약 프로세스를 새로 만들거나, 기존의 프로세스가 더 큰 메모리 공간을 요구하는데 메모리에 여유 공간이 남아 있지 않다면 어떤 프로세스의 어떤 페이... OSOS 5. 프로세스 스케줄링 (many short CPU bursts) CPU-bound process (few very long CPU bursts) CPU Scheduler Waiting time(대기 시간) amount of time a process has been waiting in the ready queue ( CPU 사용하기 위해 대기한 시간의 총합) 각 프로세스의 다음번 CPU burst time을 가지... OSOS 4. 프로세스 관리 부모 프로세스가 자식 프로세스 생성 부모와 자식이 모든 자원을 공유하는 모델 자식이 종료될 때까지 부모가 기다리는 모델 fork() 시스템 콜이 새로운 프로세스를 생성 fork 다음에 이어지는 exec() 시스템 콜을 통해 새로운 프로그램을 메모리에 올림 부모가 종료(exit)하는 경우 운영체제는 부모 프로세스가 종료하는 경우 자식이 더 이상 수행되도록 두지 않는다. → 부모 프로세스의 fo... OSOS 6. 프로세스 동기화 →Solution 1 : 한번에 하나의 CPU만이 커널에 들어갈 수 있게 하는 방법 →Solution 2 : 커널 내부에 있는 각 공유 데이터에 접근할 때마다 그 데이터에 대한 lock / unlock을 하는 방법 공유데이터의 동시 접근(concurrent access)은 데이터의 불일치(inconsistency) 문제를 발생시킬 수 있다. n 개의 프로세스가 공유 데이터를 동시에 사용하기를... OSOS [OS] 5. Interlude: Process API 따라서 case 1, 2를 제외한 나머지 가능한 조건은 rc > 0 밖에 없으므로, 자식 프로세스를 성공적으로 생성한 부모 프로세스가 위의 fork statement 다음으로 도달하게 되는 지점이 바로 이 블럭이 된다(17). 그러니까, 여기서 중요한건 실행 순서가 아니라 fork System call이 호출되면 부모 프로세스의 복제본인 자식 프로세스가 생성되고, 그 실행 흐름은 fork의 ... OSOS [OS] 19. Paging: Faster Translations (TLBs) 이때 TLB가 텅 비어 있을 것이므로 TLB Miss가 발생하면, Page Table을 뒤져 VPN이 어떤 PFN에 연결되어 있음을 나타내는 PTE를 받아 TLB에 Insert 해주고, 다시 메모리 액세스 루틴을 실행해 TLB Hit되어 a[0]에 빠르게 접근할 수 있다. Retrial 때문에 같은 일을 두 번 하는 것 같지만, a[1], a[2]은 a[0]이 포함된 VPN 06에 같이 포함... OSOS [OS] 18. Paging: Introduction 이전처럼 수식만을 사용해서 주소 변환을 수행하는게 아니라, 그냥 Page Table에 저장된 {가상 페이지 번호 <-> 물리 프레임 번호} 정보를 사용해서 각각의 가상 주소를 물리 메모리로 주소 변환한다. 이 VPN과 Offset을 실제 물리 메모리 주소로 주소 변환하기 위해 필요한 것이 바로 Page Table이 되는 것이다. PTE를 그냥 {가상 주소 <-> 물리 주소}의 연결 정보라고 ... OSOS 비동기 병행 실행 복수 개의 프로세스나 쓰레드가 동일한 데이터를 동시에 접근하는 경우, 접근 순서에 따라 실행결과가 달라질 수 있는 상황 두 개이상의 쓰레드가 같은 데이터를 동시에 접근할 때 문제점 동시 접근 가능 데이터에 대한 상호배제적 접근 제어 한번에 하나의 쓰레드만 접근 가능 한번에 하나의 쓰레드만 임계 구역에 머물 수 있음 - 두 개 이상의 쓰레드(또는 프로세스)가 동시에 임계 구역에 있어서는 안됨 ... 운영체제CSOSCS 교착상태와 무기한 연기 자원 경쟁 교착 상태 자원 할당 및 요구 관계 선점 자원 비선점 자원 공유 가능 자원 공유 불가 자원 프로세스가 자원을 사용할 수는 있지만, 자원 할당 스케줄링 정책 때문에 계속 대기해야 하는 상황 운영체제의 편중된 자원 할당 정책 때문에 발생 교착상태 배제 무기한 연기 상태 배제 - 오랫동안 대기한 프로세스가 새로 도착하는 다른 모든 프로세스보다 우선순위가 높아져 먼저 자원 확보 한번에 한... 운영체제CSOSCS 프로세서 스케줄링 선점 스케줄링 어떤 프로세스가 프로세서(CPU) 사용을 위해 경쟁할 수 있는지 결정 선점 스케줄링 우선순위가 낮은 프로세스가 우선순위가 높은 프로세스를 대기시킬 가능성 정적 우선순위 방법에 비해 높은 오버헤드 최단작업 우선 스케줄링 우선순위 스케줄링 각 프로세스에 일정 크기의 CPU 시간 할당 선점 스케줄링 최단시간 우선 스케줄링 대기 시간과 처리 시간을 고려하여 우선순위 결정 도착하는 프로... 운영체제CSOSCS [OS] 20. Paging: Smaller Tables 또 하나, Single level page table에서는 MMU에 PTE가 저장되어 있는 Page table의 시작 주소를 PTBR(Page Table Base Register)에 기록해 놓고 Page table을 찾아갔는데, Multi level page table에서는 Page table을 직접 가리키는게 아니라 Page table이 저장된 위치와 사용 여부를 기록하는 Page dire... OSOS [CS][OS] Semaphore s값에 접근하는 프로세스 1개 - binary semaphore s값에 접근하는 프로세스 n개 - counting semaphore s값이 음수 일 때 대기하고 있는 프로세스의 수 = |s값| busy waiting 존재 (s값이 음수이거나 0이면 while문에서 계속 돈다) => CPU 자원 낭비 busy waiting 해결 -> block and wakeup ready queue에서 대기... OSOS 시스템 메모리 크기 구하기(BIOS) 현재까지의 OS 모습이다. 32비트 보호모드에서 IA-32e(64비트)모드로 넘어갈 준비를 하고 있다. 메모리의 크기를 구하는 코드가 책에서는 직접 접근하여 값을 기록하는 식으로 설명이 되있었는데, 이 방법이 마음에 안들었다. cpu-z 같은 프로그램에서는 메모리가 몇번째 슬롯에 꽃혔는지도 알 수 있는데 이런 방법은 너무 별로라고 생각했다. 바이오스 인터럽트로 구하기 가장 간편한 방법이다. ... 운영체제OSOS [OS] 2. Introduction 사용자가 System call을 통해 프로그램 실행, 메모리 액세스 등의 작업을 할 수 있기 때문에 이를 OS가 사용자에게 Standard Library를 제공한다고 표현하기도 한단다. 또 다른 측면에서 보면, OS 위에서 돌아가는 여러 프로그램이 동시에 명령과 데이터에 접근하기도 하고(메모리 공유), 외부 장치에 접근하기 때문에 OS를 Resource manager라 부르기도 한다. 이는 ... OSOS 단편화 해결방법 단 , hole들을 이동할 때 어느 hole을 옮기는 것이 가장 효율적인지 계산하는 작업과 , 메모리에 로드하려는 프로세스를 분리 시켜 로드 한다. 이때 MMU에서는 각 분리된 페이징들의 메모리 주소와 CPU가 보내는 논리적 주소마다 relocate register를 매핑하여 테이블 형태로 관리해주고 맵핑 하여 연속 메모리를 참조하는 것처럼 CPU를 속인다. (맵핑 해주기위해서 많은 relo... OSOS 자바스크립트 메모리 상에서 데이터 관리 한 단위 당 표현 가능한 데이터 개수 : 2개 한 단위 당 표현 가능한 데이터 개수 : 4개 한 단위 당 표현 가능한 데이터 개수 : 16개 이처럼 단위 묶음 체계의 비트 수를 늘리면, 데이터 주소의 개수는 줄어들고, 한 단위 당 표현 가능한 데이터의 개수는 늘어난다. 데이터 주소의 개수가 줄어들수록 검색할 대상이 줄어들기 때문에 검색 시간을 줄어들게 된다. 변수 : 변할 수 있는 데이터 그... JavaScriptOSJavaScript 리눅스 커널 내부구조 부록 #A, Xen 가상화 사용법 (Ubuntu, Windows 10 설치) 앞 장의 글을 읽고 설치를 따라했다면 grub 부트로더가 Xen 으로 부팅을 잡아준다. 위와 같은 화면이 나오면 부트로더가 제대로 Xen 을 잡아줬다는 뜻이다. 필자는 맨 위의 Fedora, with Xen 4.15.2 and Linux 5.16.16-200.fc35.x86_64 로 부팅했다. 컴퓨터가 실행되면 터미널에 아래의 명령어를 입력하여 Xen 이 제대로 실행되는지 확인한다: Ubun... XenubuntuWindows 11linuxOSVirtualizationKernelKernel 스레드의 동기화 문제와 해결법 그 무언가는 상태나 행위, 시간, 속도, 주기, 출현 등이 될 수 있습니다. 어떤 작업을 요청했을 때 그 작업이 종료될 때까지 기다린 후 다음 작업을 수행합니다. 데이터를 주고받는 순서가 중요할 때 사용되며, 요청한 작업만 처리하면 되기 때문에 전체적인 수행 속도는 빠를 수 있습니다. 하지만, 한 작업에 대한 시간이 길어질 경우, 전체 응답이 지연될 수 있습니다. 어떤 작업을 요청했을 때 그... CSOSCS 디스크 스케쥴링 이름에서 알 수 있듯이 가장 먼저 도착한 요청을 가장 먼저 처리한다. 현재 위치에서부터 Seek Time이 가장 짧은 요청을 먼저 처리한다. 현재 53부터 거리가 가장 짧은 요청을 먼저 처리하므로, 총 이동 거리는 236 Cylinders이다. 가령, SSTF은 처음에 53번에서 바로 65번으로 이동하는데, 만약 53번에서 37번으로 이동한 후 SSTF를 수행하면 208 Cylinders의 ... 운영체제OSOS 우분투(Ubuntu) 홈서버 구축기(1) - WOL 설정 영상 처리 같은 고스펙의 PC가 필요 없는 비루한 개발자 입장에서 기존에 돌리던 웹서버와 데이터베이스, 도커 등을 무리 없이 돌릴 수 있을 정도의 PC가 필요했다. 이 정도면 내가 원하는 프로그램들은 무리 없이 돌릴 수 있을 듯하다. 인텔 CPU로도 갈 수 있었지만 요즘 라이젠을 쓰고 싶은 마음이 너무 크고 현재 기준 우분투 역시 AMD CPU를 잘 지원해주고 있기 때문에 고민 없이 선택했다... OSHome serverubuntuwolHome server Linux - (9) : File Directory & Permission 그럼 아래와 같이 결과가 나올 것이다. -rw-r--r-x. 이에 대해서 순서대로 어떠한 의미를 가지고 있는지 이해해보자. r : read 첫번째 "rw-" 는 소유자(user) 의 권한은 읽기와 쓰기 두번째 "r--" 는 그룹(group) 의 권하는 오로지 읽기 세번째 "r-x" 는 기타사용자(other) 는 읽기와 실행 이 가능하다는 권한을 표시해주는 것이다. 각 권한을 변경할 수 있는데... OSOS 24. Synchronization 강의 메모 static으로 선언되어있기 때문에 static int cnt = 0; 에서의 cnt는 thread1, thread2에 의해 사용되는 shared variable 이다. 단지 scope이 thread라는 함수에 한정지어졌을 뿐이다. 85.15 volatile 변수 변수를 선언할 때 앞에 volatile을 붙이면 컴파일러는 해당 변수를 최적화에서 제외하여 항상 메모리에 접근하도록 만듭니다. v... CSAPPOSCSAPP Process Management (OS강의 4주차) 부모 프로세스(Parent process)가 자식 프로세스(children process) 생성 부모와 자식이 모든 자원을 공유하는 모델 부모와 자식은 공존하며 수행되는 모델 자식이 종료(terminate)될 때까지 부모가 기다리는(wait) 모델 fork() 시스템 콜이 새로운 프로세스를 생성 fork 다음에 이어지는 exec() 시스템 콜을 통해 새로운 프로그램을 메모리에 올림 부모가 종... 운영체제OSOS 멀티 Thread프로그래밍에서의 동기화 개념 및 구현 critical section은 두 개 이상의 thread가 동시에 접근할 수 없는 영역 Semaphore를 얻은 Thread만이 Critical Section에 들어갈 수 있으며, 해당 Thread가 Shared Resource를 이용해 작업을 진행 *Java에서는 메서드에 synchronized블럭 또는 synchronized 메서드 로 명시하면, 동기화를 할 수 있게 된다. 즉, 해당 ... cs_studyOSOS