일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 칼리 리눅스
- 리눅스 기초
- 리눅스
- Bitnami
- Bandit
- nomaltic
- Vitual Disk Image
- shell
- 기초
- mysql
- virtualbox
- nomaltic place
- Error
- Linux
- kali linux
- 칼리
- 노말틱
- kali
- 보안
- Normaltic
- Web shell
- MariaDB
- 네트워크
- VDI
- Virtual Box
- Today
- Total
목록전체 글 (76)
게으른 개발자

라운드 로빈 Fixed priority scheduling foreground 일을 전부 처리 후에 background 일을 처리함 그러나 starvation 가 발생할 수 있다. 처음 들어오는 프로세스는 우선순위가 가장 높은 큐에 집어넣음. 그러나 time quantum이 짧음 할당 시간내 다 못 끝내면 아래 단계의 우선순위로 강등이 된다. quantum = 8 ---> quantum = 16 -----> FCFS 큐간의 우선순위에서 위에 순위의 큐가 비었을 때만 밑에 순위 큐를 처리한다. 이 방식은 cpu 사용시간이 짧은 프로세스에게 우선순위를 많이 주는 방식이다. homogeneous processor 만약에 특정 프로세서(cpu)에서 수행되어야 하는 프로세스(프로그램)가 있는 경우 경우에는 문제가..

현대적인 cpu 스케줄링은 preemptive - 선점형 스케줄링을 거의 대부분 사용 중이다. 시스템 입장에서 성능척도 이용률 전체 시간에서 cpu가 놀지 않고 일한 시간 처리량 주어진 시간 동안에 몇 개의 작업을 완료한 양 프로세스 입장에서 성능척도 소요시간 cpu를 사용을 시작하고 사용을 끝낸시간 -> 걸린 시간 대기시간 순수하게 기다린 시간을 의미한다. 응답시간 처음으로 cpu를 얻기까지 걸린 시간 ex) 중국집을 예시로 첫 번째 음식이 나오는 데 걸리는 시간. FCFS는 비선점형 방식이다. 그러나 효율적이지는 않다. 너무 오래 기다리는 경우가 있기 때문에 좋은 스케줄링 방법이 아니다. ===> Convoy effect FCFS는 짧은 프로세스가 올 경우에 위와 다른 결과가 나온다. 평균 대기 시간..

CPU burst : cpu를 사용하고 있는 상태 I/O burst : I/O를 하고있는 상태 cpu 스케줄링이 필요한 이유 : interactive한 job을 처리하기 위해 -> 사용자가 답답하지 않도록 cpu scheduler, dispatcher 는 운영체제 안에 코드가 들어있다.

부모 프로세스의 code, data, stack, pc , 등등을 그대로 복사해서 자식 프로세스를 만듦 원칙적으로는 부모 프로세스와 자식 프로세스는 서로 경쟁하면서 자원을 서로 많이 차지하려고 함. Copy-on-write(COW) 리눅스나 효율적인 운영체제에서는 일단 자식이 부모의 공간을 공유하고 있다. 그러나 자식이 write가 발생한다면 그때 copy를 한다.( 내용이 수정이 될 때, 부모의 code, data, stack을 카피한다. ) 그러나 부모의 모든 걸 copy 하는 게 아니다. -> 원래 프로세스는 메모리에서 실행될 때, 모든 부분을 메모리 영역에 올려두고 작업하지 않는다. 따라서 잘게 쪼개서 물리적인 메모리에 올린다. -> 그 쪼개져서 올려진 메모리 부분에서 write가 발생한다면 그 ..

자원을 공유하는 모델보다는 공유하지 않는 게 일반적이다. 부모 프로세스가 자식 프로세스를 생성한다. 1. 부모 프로세스를 복제 -> fork() 2. 새로운 프로그램을 덮어씌움. -> exec() fork, exec -> 시스템 콜이다. 자식 프로세스가 먼저 종료되고, 그다음에 부모 프로세스가 종료됨. 부모 프로세스가 종료될 때, 자식 프로세스를 종료하고 부모 프로세스가 종료된다. - 자식 프로세스가 많은 자원을 사용할 경우에도 부모 프로세스는 자식 프로세스를 종료시킨다.

Thread Thread : 프로세스 내부에 cpu 수행 단위가 여러 개 있는 경우 프로세스 하나에서 공유할 수 있는건 최대한 공유한다. (프로세스 상태, 각 종 자원) 단, cpu 수행과 관련된 정보는 별도로 관리한다.(프로그램 카운터, 레지스터, stack 공간) 같은 일을 하는 프로세스를 여러개여러 개 하고 싶으면, pc 만 여러 개를 두면 된다.(cpu 수행 단위를 여러 개 둔다.)-> thread 아래 이미지 참고 Thread를 사용할 때 장점. 예시 : 네이버 웹 화면을 띄울때, 스레드를 하나만 사용할 때는 화면이 전부 완성할 때까지는 창이 안 떠서 답답하다. 그러나 여러개의 스레드를 사용하게 되면 화면이 들어온 데이터를 즉각 반영해서 화면에 띄어준다. 스레드를 사용하면 자원 낭비를 줄일 수 ..

PC register가 code의 어느 부분을 가리키고 있다. (실행해야 할 instruction 위치) ALU : 산술 논리 장치 프로세스는 실행 중인 프로그램을 의미한다. 사용자 프로그램이 할 수 없는 일을 운영체제에게 요청을 할 때(system call), 그러면 PC ( 프로그램 카운터)가 커널의 code 영역을 가리키면서 cpu가 작업을 실행한다. 커널 주소공간에서 커널 스택에서 프로세스마다 별도로 두고 있다.!-> 데이터가 꼬이는 것을 방지하기 위해!! Ready : 다른 모든 준비는 완료, cpu만 얻으면 instruction을 실행가능 cpu는 하나씩 프로세스를 실행한다. Process state : 프로세스의 상태 -> running , block , ready... Process ID ..

구현 방법 1 : cpu 낭비, i/o 장치 낭비-> 하나의 i/o만 일어나므로 구현 방법 2 : cpu가 놀지 않고 효율적으로 동작함. 여러 개의 i/o 장치 사용가능. ---> 보통 동기식 입출력에서 이 방법을 많이 사용 DMA : DMA도 직접 메모리에 접근이 가능하다. 일반적으로 좌측 방식을 많이 사용함. -> i/o를 수행하는 special instruction 우측 -> memory mapped i/o Volatility : 휘발성 연두색 -> 휘발성, 핑크색 -> 비휘발성 primary : cpu 가 직접 접근이 가능 | secondary : cpu 가 직접 접근 불가 cpu가 직접 접근이 가능하려면 byte 단위로 접근이 가능해야 한다. 하드디스크는 섹터단위로 접근해야 하기 때문에 바이트 ..