쾌락없는 책임 (공부)/운영체제
-
운영체제 08쾌락없는 책임 (공부)/운영체제 2021. 6. 8. 17:58
본 포스트는 '신용현'교수님의 운영체제 강의를 듣고 이해, 정리한 내용들을 올린 포스트입니다. - 강의자료는 올리지 않습니다. 하드 디스크 하드 디스크는 내부에 CD 같은 원판들이 여럿 있으며 이 원판에 자료를 저장하고 있습니다. 최근에는 SSD가 많이 좋아져서 중요성이 떨어지는 것 같지만 아직 단가 등으로 인해서 대용량 저장은 하드디스크를 사용하고 있습니다. 때문에 디스크에서 IO를 하는 경우 이에 대한 알고리즘을 생각할 필요가 있습니다. Disk I/O Time = Seek time + Rotational delay + Data Transfer Time - Seek time : 디스크 헤드가 트랙으로 가는 시간으로 3개중 제일 많은 시간을 차지합니다. - Rotational delay : 디스크 헤드..
-
운영체제 07쾌락없는 책임 (공부)/운영체제 2021. 5. 27. 17:23
본 포스트는 '신용현'교수님의 운영체제 강의를 듣고 이해, 정리한 내용들을 올린 포스트입니다. - 강의자료는 올리지 않습니다. Virtual Memeory 이전 포스팅에서 요약한 페이징의 경우 메모리보다 큰 프로그램을 사용하기 위해 사용하는 기법입니다. 대신 메모리가 한계가 있다보니 일부분씩만 올리게 되는데 전체를 써야 하는 경우 가상 메모리가 필요하게 됩니다. 이 경우 프로그램의 일부 페이지만 메모리에 올라가게 하며 logical / physical memory 주소 공간을 분리하며 이 경우 logical이 주로 더 큽니다. (logical이 실제 프로그램이 필요한 메모리 양입니다) 물리적인 메모리의 주소가 더 작으니 Demand Paging을 통해 구현하게 됩니다. Demand Paging 필요한 경..
-
운영체제 06쾌락없는 책임 (공부)/운영체제 2021. 5. 27. 16:33
본 포스트는 '신용현'교수님의 운영체제 강의를 듣고 이해, 정리한 내용들을 올린 포스트입니다. - 강의자료는 올리지 않습니다. Paging 이전에 한 연속 할당의 경우 메모리 효율도가 떨어지기 때문에 나온 기법입니다. 프로세스를 일정한 크기로 나누며 그 단위가 Page가 됩니다. 그래서 실행시 첫 페이지를 메모리로 부른 뒤 나머지 페이지는 디스크에 두고 필요시 불러서 사용하게 됩니다. 그리고 페이지마다 연결하는 방법이 있어 메모리에 흩어져 있어도 프로세스가 실행가능하다는 장점이 있습니다. 프로세스의 페이지 페이지 테이블 메모리 P1 1 1 0 P2 2 2 1 P1 P3 3 4 2 P2 ... 3 (페이지 번호) (메모리 주소) 4 P3 또한 여러 프로세스에서 같은 페이지를 사용한다고 했을 시 메모리에는 ..
-
운영체제 05쾌락없는 책임 (공부)/운영체제 2021. 5. 19. 15:07
function(){ ... } 서론 보통 프로그래밍을 할 때 라이브러리나 출력 파일, 참조 파일 등 여러 파일들을 묶어(bind) 사용하게 됩니다. 이런 경우 어떤식으로 메모리에서 파일들을 묶을 수 있는지에 대해 알아봐야 합니다. Address Binding 수행할 명령어나 데이터 등을 실제 메모리 주소로 연결하는 것으로 3가지 경우에서 발생하게 됩니다. 1. 컴파일시 묶기 (Complie time binding) - 메모리에 올라갈 위치를 컴파일 단계에서 정하게 됩니다. - 파일을 로드할 시 위에서 정한대로 주소를 지정해주게 됩니다. - 그런데 해당 주소를 사용중이라면 다시 컴파일을 해야 해서 비효율적이라 할 수 있습니다. 2. 로드시 묶기 (Load time binding) - 컴파일 시 상대적인..
-
운영체제 04쾌락없는 책임 (공부)/운영체제 2021. 5. 19. 14:31
본 포스트는 '신용현'교수님의 운영체제 강의를 듣고 이해, 정리한 내용들을 올린 포스트입니다. - 강의자료는 올리지 않습니다. Bounded Buffer 각자의 프로세서들은 공통된 버퍼에 접근하는 경우가 있고 이 경우 동기화를 잘 해줘야 각종 오류들을 피할 수 있습니다. Reader-Writer 문제 여러 프로세스가 데이터들을 공유할 때 단순히 읽기만 하는 프로세스가 있는 반면 쓰기를 해서 데이터를 변경하는 프로세스가 있습니다. Reader가 여러개인 경우는 큰 문제가 되지 않지만 데이터 수정을 하는 Writer가 여럿이면 데이터 변경에 있어서 제한을 둬야 합니다. Reader Writer readcount를 통해 몇명이 읽는지를 알려줌 write를 하기 전 p(wrt) = 0으로 해 읽기 불가 상태로 ..
-
운영체제 03쾌락없는 책임 (공부)/운영체제 2021. 4. 10. 16:58
본 포스트는 '신용현'교수님의 운영체제 강의를 듣고 이해, 정리한 내용들을 올린 포스트입니다. - 강의자료는 올리지 않습니다. 프로세스들이 서로 협력을 한다는건 파일을 공유하는것이 위주입니다. 이걸 공유함으로서 속도가 빨라지고 분업을 할 수 있어 전체적인 성능 향상을 끌어올릴 수 있습니다. 예를 들어 A, B프로세스가 있는데 정보 공유를 하지 않는다면 A가 B에게 정보를 보낼 때 커널을 통해서 보내야 합니다. 하지만 메모리의 일부분을 공유한다면 A는 공유된 부분에 변경사항을 전달, B는 그 변경사항을 가져오는 식으로 간편화 할 수 있습니다. - Producer/Consumer 문제 : 한 프로세스는 정보를 생산하고 한쪽은 소비하는데 이를 어떻게 할것인가? * Producer도 다른 곳에서 Consumer..
-
운영체제 02쾌락없는 책임 (공부)/운영체제 2021. 4. 10. 11:19
본 포스트는 '신용현'교수님의 운영체제 강의를 듣고 이해, 정리한 내용들을 올린 포스트입니다. - 강의자료는 올리지 않습니다. 1. 프로세스란 - 운영체제는 동시에 여러 프로그램을 돌리고 있습니다. 이걸 job, process라고 부릅니다. 한마디로 프로세스는 실행중인 프로그램이라고 할 수 있습니다. 2. 프로세스의 주소 공간이 포함하는 것들 - 프로그램의 코드 (text 구역이라고도 불립니다, 프로그램을 해석하면 결국 2진수가 되니깐) - 데이터 구역 (전역변수, 프로세스가 종료되지 않는 이상 남아있는 변수들) - 스택 (로컬 변수, 함수 인자, 리턴 값 등이 저장되는 곳) - 힙 (수행중 동적으로 할당됩니다. 줄어들기도 하고 커지기도 합니다) - 다음 해야할 일의 주소를 가리키는 프로그램 카운터 3...
-
운영체제 01쾌락없는 책임 (공부)/운영체제 2021. 4. 9. 10:23
본 포스트는 '신용현'교수님의 운영체제 강의를 듣고 이해, 정리한 내용들을 올린 포스트입니다. - 강의자료는 올리지 않습니다. 현재 컴퓨터는 프로그램을 돌릴때 저장장치, 메모리, CPU, 레지스터가 서로 데이터를 주고 받으면서 작동하고 있습니다. 여기서 캐싱이란 엑세스 속도를 위해서 데이터를 속도가 빠른 저장장치로 이동시키는 것으로 여러 레벨(여러 저장장치)에서 이루어지게 됩니다. 빠른 저장장치는 CPU에 있으니 CPU가 일을 잘 하기 위해서 필요한 작업이라고 볼 수 있습니다. ( 같은 데이터를 여러번 읽을 확률이 높으니 앞으로 있을 요청도 빠르게 처리할 수 있습니다 ) 캐싱을 하면 일단 자신의 로컬에 데이터가 있는지 확인합니다. 있다면 바로 사용하면 되는 것이고 없으면 가져와서 로컬 캐시에 카피를 하게..