전체 글(64)
-
[OS] Deadlock (교착상태)와 Deadlock 처리
Deadlock 프로세스는 실행을 위해 여러 hw자원(resources)을 필요로한다. 그리고 이 자원을 사용하는 application들이 있다. OS는 그 자원을 잘 나누어주어야한다. 예를들어 아래와같은 상황이 발생하면서도 공교롭게도 가끔, 아차! 싶으면, 교착상태가 발생한다. P1이 자원의 일부는 가졌으나 일부자원A는 가지지 못했을 떄, waiting해야한다. 다른 프로세스P2가 자원A을 가지려고 waiting하고있었을 때 둘다 기다리는 상태이므로 교착상태(Deadlock)의 가능성이 존재한다. 이 4가지가 모두 만족될 때, 교착상태가 일어날 수도있다. Mutual exclusion : 상호 배타. 한사람이 쓰고있으면 다른사람이 쓰지못하는 경우 Hold and wait : 어떤 자원을 가지고있으면서 ..
2020.04.24 -
[정보보안] nodeJS의 crypto module로 알아보는 Hash
Hash 데이터를 관리하고, 유지하는 자료구조이다. 리소스를 이용한 속도를 중시한!! 자료구조. 해쉬를 한마디로 요약하면 동일한 input -> 동일한 output 이라고 할 수 있다. 보안측면에서의 해시 해시함수란, 임의의 길이의 문자열을 받아 고정 문자열로 바꾸어주는 함수이다. 일정한 규칙이 존재한다. 동일한 input -> 동일한 output input 이 살짝 변경되어도 -> output은 어마무시하게 바뀜 항상 H(x)만 작동. H() 의 Inverse 불가능 Rainbow Table Attack 레인보우 테이블(해쉬값, 입력값 연결해놓은 테이블. 동일 input -> 동일 output의 취약점을 찾기위함) 에서 찾아보면 input을 찾을 수 있다는 발상에서 나온 공격법이다. Salt 그 Rai..
2020.04.23 -
[OS] 동기화와 Critical Section(임계구역) 문제
임계구역 문제 Critical Section, Critical Section Problem Critical Section(어떤 특정 코드가 작동하는 영역) Problem[임계구역 문제] : common variable을 update하는 구역에 생기는 문제들을 말한다. common variables 부분을 update하거나 write 하는 경우.. 다시한번 정리해보면 Critical Section : 하나의 시스템에는 여러개의 쓰레드(멀티 쓰레드)로 구성되어있는데, common으로 사용하는 부분이 있다. 그 부분을 업데이트 하는 부분의 코드를 말한다. 예를들어, Parent 클래스에서 계좌의 balance에 접근하여 연산하고, Child클래스에서도 계좌의 balance에 접근하여 연산하는 코드가 있을 텐데..
2020.04.22 -
[OS] Thread와 프로세스 동기화
Thread 쓰레드란, 프로그램 내부의 흐름을 말한다. 보통 1개의 프로그램에는 1개의 흐름이 존재하지만, 여러개의 흐름이 존재하는 경우 multiThread(다중 쓰레드)라고 한다. 이렇게 멀티쓰레드를 가질 수 있는 이유는, 쓰레드가 매우 빠른 간격으로 switcing 되고있기 떄문이다. 그래서 실제로 cpu는 하나이기 때문에 한개의 쓰레드만 실행될 수 있지만, 여러개의 쓰레드가 동시에 실행되는 것 처럼 느낄 수 있는 것이다. concurrent[실제로는하나지만빠른스위칭때문에동시처럼보임] vs simultaneous[실제로2개가실행.cpu가 한개일경우 이런일은 있을 수 없음 ㅎ]의 용어도 알아두자. 예시를 보면, 사실 대부분의 프로그램은 다중 쓰레드 프로그램이다. web browser - 화면 출력 T..
2020.04.20 -
[OS] 프로세스의 생성과 종료
프로세스 생성과 종료 프로세스 생성 프로세스는 프로세스에 의해 만들어진다. 컴퓨터에서 실제 프로세스 생성과정을 보자. BOOTING : OS가 RAM 에 resident OS가 가장 먼저 첫 process를 만든다. (ex. Linux: init) 그 init 프로세스가 여러개의 프로세스들을 만든다. 그 만들어진 프로세스들은 또 자식프로세스들을 생성... 이렇게 process Tree 를 만들고, parent process, child process, sibling process(부모같음)의 개념을 똑같이 사용한다. PID(Process Identifier) : 프로세스의 각 id가 존재한다. 절대 중복되지 않음! (PPID(부모의 PID)개념도 존재) 프로세스 생성(system call) fork():..
2020.04.19 -
[OS] CPU Scheduling 알고리즘, 평가 척도
CPU 스케쥴링 알고리즘 mem 내에서는 어느 시점이 지나서 p1 -> p2 ... 이렇게 돌아가는데 그렇게 메인 메모리 내에서 process 의 switching이 일어나는 것을 context switching이라고 한다. CPU 스케쥴링 용어 Ready Queue 에서 어떤 프로세스를 선택해서 cpu에게 보내줄지를 계산하여 결정하는 것. 순서대로 하는 것이 가장 쉽기야 하겠지만, 그보다 더 효율적인 경우가 있을지를 계산하여 순서를 결정한다. 그 업무를 담당하는 프로그램을 OS 내 cpu 스케쥴러 라고 한다. 시나리오를 보자. context switching가 일어나야함 : p1 -> p2로 작업이 변경되어야한다. context switching : CPU에서 작업할 프로세스가 교환되는것 p1이 현재상..
2020.04.11