분류 전체보기(754)
-
[CS] 동기화에 대한 나름의 이해
프로세스나 쓰레드가 공유 자원에 접근할 때 동기화가 되지 않는다면 너무 많은 우유라고 불리는 문제가 생긴다 즉 엄마가 냉장고를 확인해서 우유가 없음을 확인하여 우유를 사러 가는 사이 아빠가 냉장고를 확인해서 우유가 없음을 확인하여 우유를 사온다 그러면 1개만 있어야 하는데 2개가 생겨 문제가 생긴다 이를 해결하기 위해서 크리티컬 섹션(임계 영역)에서의 경쟁 상태를 막아주어야 한다 즉 한번에 하나의 프로세스만 들어가도록 해야하는데 이를 프로세스 동기화라고 한다 프로세스 동기화를 구현하는 방법으로는 크게 두 가지가 있는데 뮤텍스와 세마포어이다 이 둘의 가장 큰 차이는 한번에 얼만큼의 프로세스가 접근 가능한지이다 한번에 하나만 가능하면 뮤텍스 그 이상이면 세마포어이다 뮤텍스는 락을 가진 프로세스 하나만 들어갈..
2023.10.12 -
[CS] 운영체제와 하드웨어의 작동원리에 대한 나름의 이해
cpu, memory, I/o device 간에 어떻게 소통할까? 핵심은 인터럽트를 통한 운영체제의 제어이다 CPU는 매우 빠르다 따라서 이 CPU를 기다리게 만드는 건 비효율적이다 그렇기 때문에 계속적으로 일을 주어야 한다 이 일이란 메모리에서 인스트럭션을 하나씩 읽어서 처리히는 것을 의미한다 프로세스와 os는 memory에 올라간다 이걸 읽고 처리하는 것이다 이때 cpu의 레지스터에는 모드 레지스터가 있는데 이 값이 0이면 커널 모드 1이면 사용자 모드이다 커널 모드에서는 모든게 가능하다 os의 코드는 커널 모드에서 돌아간다 즉 메모리 접근부터 입출력 처리까지 모든게 가능하다 하지만 사용자 모드에서는 이게 안된다 이걸 하고 싶으면 시스템콜을 통해서 요청을 해야 한다 시스템콜이 곧 인터럽트이다 다만 소..
2023.10.11 -
[CS] 브라우저의 역할에 대한 나름의 이해
브라우저의 중요한 역할 중 하나는 화면에 웹페이지를 그리는 것이다 그 과정은 다음과 같다 Html 파싱 -> DOM -> CSSOM(css를 만나면) -> render tree 생성 -> layout -> print Html을 파싱해서 dom 이라는 트리 구조를 만든다 그 과정에서 css를 만나게 되면 cssom 트리 구조를 만든다 이후 이 생성된 dom과 cssom을 이용해 render tree를 만든다 render tree는 실제로 화면에 보이는 요소들이다 따라서 display None으로 된 것은 render tree에 없다 이후 이 화면에 보이는 요소들을 화면에 배치시키는 layout 과정을 거친 후 paint를 하게 된다 Reference https://m.post.naver.com/viewer..
2023.10.11 -
[CS] 멀티 쓰레드에 대한 나름의 이해
동시성과 병렬성 동시성은 하나의 cpu가 마치 동시에 여러 프로그램을 처리하는 것과 같은 특성이다 병렬성은 여러 개의 cpu가 동시에 작업을 처리하는 것을 의미한다 하드웨어적 특성이다 멀티쓰레드는 하나의 프로세스에서 여러 개의 쓰레드를 사용하는 것을 의미하고 장점은 코드 데이터 힙 영역을 공유하기 때문에 하나의 프로그램에서 여러 프로세스를 할 때 필요한 inter process connection(IPC)도 필요없고 많은 메모리 공간도 필요없어 자원을 효율적으로 이용한다 참고로 프로세스는 독립적인 메모리 공간을 가지고 있다 또한 콘텍스트 스위칭에 따른 오버헤드가 없다 하지만 멀티쓰레드의 단점은 데이터가 공유되기 때문에 동기화를 해서 쓰레드 간의 데이터의 일관성을 보장해야 한다 Referencehttps:..
2023.10.10 -
[CS] 운영체제가 하는 일에 대한 나름의 이해
1. CPU 스케줄링 매우매우 빠른 CPU를 어떻게 효율적으로 사용할 것인가 2. 메모리 관리 프로세스마다 메모리를 어떻게 할당하고 관리할 것인가 꼭 똑같이 나누는 방법이 좋은 것이 아니다 프로세스가 원활하게 작동하기 위한 최소 메모리량도 고려해야 한다 3. 스토리지 관리 매우매우 느린 스피닝이라는 방법을 활용하는 하드디스크를 어떻게 하면 효율적으로 저장하고 사용할 것인가 4. I/O 관리 어떻게 하면 cpu와 입출력 간에 정보를 주고 받게 할 수 있는가 그 외 프로세스 생성 및 관리, 네트워킹, 명령어 해석기, 보호 등의 역할을 한다 내가 만약 운영체제라면 어떻게 하는게 좋을지의 관점에서 수업을 듣자 Reference https://core.ewha.ac.kr/publicview/C01010201403..
2023.10.10 -
[CS] 운영체제 예에 대한 나름의 이해
유닉스 - 오픈소스로 공개된 운영체제 - c언어로 만들어짐 c언어는 이 운영체제를 만들기 위해서 만들어짐 - 기계어로 만들어진 것이 아니기 때문에 이식성이 좋음 - 최소한의 커널을 가지기 때문에 확장이 용이하다 - 확장성과 오픈소스라는 장점은 다른 운영체제가 만들어지는데 기여하였다 - 개인용 컴퓨터가 아닌 서버용 컴퓨터를 위한 운영체제이다 Dos - 싱글 태스크를 위해 만들어진 운영체제 - 개인용 컴퓨터를 위한 운영체제이다 이후 ms window나 handheld를 위한 os 등 다양하게 발전해나가고 있다 Referencehttps://core.ewha.ac.kr/publicview/C0101020140307151724641842?vmode=f
2023.10.10