synchronization[mutex]
mutex 뮤텍스 락은 단순한 형태이며, 하나의 전역변수, 두개의 함수로 구현이 가능합니다. 자물쇠 : 프로세스들이 공유하는 전역 변수 lock 임계 구역을 잠그는 역할 : acquire 함수 임계 구역의 잠금을 해제하는 역할 : release 함수 예시 코드 acquire(); // 임계 구역내의 활동 release(); ac...
mutex 뮤텍스 락은 단순한 형태이며, 하나의 전역변수, 두개의 함수로 구현이 가능합니다. 자물쇠 : 프로세스들이 공유하는 전역 변수 lock 임계 구역을 잠그는 역할 : acquire 함수 임계 구역의 잠금을 해제하는 역할 : release 함수 예시 코드 acquire(); // 임계 구역내의 활동 release(); ac...
semapo 뮤텍스 락은 하나의 공유 자원에 접근하는 프로세스를 상정한 방식입니다. 하지만 세마포는 뮤텍스 락과는 비슷하나, 다른 점이 있다면 여러개의 공유 자원이 있다는 점 입니다. 뮤텍스 락은 자물쇠를 걸어 잠금으로써 접근을 제한했다면, 세마포는 차단기처럼 가도 되는지, 가면 안되는지로 접근을 제한합니다. 세마포는 뮤텍스락과 비슷하게 하나의 ...
synchronization 동시다발적으로 실행되는 프로세스들은 서로 데이터를 주고 받으며 협력하며 실행 될 수 있습니다. 예를 들어서 메모장 프로세서에는 사용자로부터 입력을 받는 프로세스, 내용을 화면에 보여주는 프로세스 등 다양한 프로세스들이 있습니다. 이들은 각기 다른 프로세스들이지만 공동의 목표를 위해 서로 협력하는 존재입니다. 이렇게 협...
문자열 분리 Java에서 문자열 ( String ) 을 분리하는 방법에는 substring, split 이 존재합니다. 이 두개의 메서드에 대해서 알아보겠습니다. split(String regex) split(String regex, int limit) 이 두개의 메서드는 매개 변수로 정규표현식으로 문자열만 받거나 문자열과 limit(문자열을 ...
CPU 스케쥴링 알고리즘 CPU의 스케쥴링 알고리즘은 매우 다양하기 때문에 이번 포스터에서는 대표적인 7가지의 알고리즘에 대해서 설명하겠습니다. 선입 선처리 스케쥴링(FCFS 스케쥴링) 선입 선처리 스케쥴링 알고리즘은 이름 그대로 먼저 들어온 프로세스부터 처리하는 알고리즘 방식입니다. 선입 선처리 스케쥴링 알고리즘은 먼저 들어온 순서대로 처리...
CPU 스케쥴링 모든 프로세스는 CPU를 필요로 하고, 모든 프로세스는 먼저 CPU를 사용하고 싶어 합니다. 하지만 컴퓨터의 CPU는 무한한 자원이 아닌, 한정적인 자원으로 모든 프로세스에게 할당하기란 사실상 어려운 일입니다. 그래서 운영체제는 공정하고 합리적으로 프로세스에게 CPU 자원을 배분시켜주는데, 이거를 바로 CPU 스케쥴링이라고 합니다....
쓰레드 스레드는 메모리 안에서 실행되는 프로세스를 구성하는 실행의 흐름 단위입니다. 스레드라는 개념이 도입 되기 전에는 하나의 프로세스는 한 번에 하나의 일만 처리하였습니다. 즉, 하나의 프로세스에 하나의 스레드만 존재 했었습니다. 하지만 스레드라는 개념이 도입되고 나서는 하나의 프로세스가 한 번에 여러가지 일을 처리하는 것이 가능하게 되었습니다...
프로세스 상태와 계층구조 CPU의 자원은 한정적이여서 프로세스들은 항상 빠르게 번갈아 가며 실행됩니다. 그 과정에서 하나의 프로세스는 여러 상태를 거치며 실행되는데, 이 여러 상태에 대해서 알아보겠습니다. 프로세스 상태 생성 상태 이제 막 메모리에 적재되어 PCB를 할당 받은 상태, 즉 프로세스를 생성 중인 상태를 뜻합니다. 생성 상태를...
프로세스 프로그램은 실행되기 전까지는 그저 보조기억장치에 있는 데이터 덩어리일 뿐이지만, 보조기억 장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간 이 프로그램은 프로세스가 됩니다. 즉, 프로세스는 메모리에 프로그램이 적재되어 실행중인 프로그램을 말합니다. 컴퓨터를 부팅하면 많은 프로그램이 메모리에 적재되어 수많은 프로세서들이 실행됩니다. ...
Comparable, Comparator Comparable와 Comparator은 자바의 정렬 기준을 정의 하는 인터페이스중 하나로 , 본질적으로 의미는 똑같습니다. 서로 공통점은 사용자 정의 클래스의 객체들을 비교할 수 있게 해주며, 인터페이스들을 구현한 사용자 정의 클래스의 객체들을 정렬하고 싶을때 임의의 정렬기준을 쉽게 정의할 수 있도록 도...