c(11)
-
14
14동시성 문제 14장의 경우 어떤 문제들이 발생하는지 처리하도록 한다. 여기서 사실 14장의 경우 식사하는 철학자 라는 고전적인 문제를 풀어보는것이 훨씬 효율적인 방식 이라고 할 수 있을듯 하다 . 동시성 제어 매커니즘이 없는 경우 전체 상대를 다르게 만들 때 동시성 제어 문제가 발생한다. 데이터 자원에 데이터 경쟁이 발생 했을 때 이를 기아 상태라고 하며 여기서 어떤 문제를 처리할수 있을지 확인 하는 장이 될듯하다 . 고유한 동시성 문제 하나이상의 작업이 있는 모든 동시성 시스템은 다수의 안티리빙이 일어 날 수 있으며 이는 시스템의 고유한 속성이다 . 안티리빙 자체로는 문제가 되지 않으나 위에 기술한 내용들에 의해서 안티리빙으로 인한 문제가 발생할 수 있다는것이다. 위와 같은 점을 알아 보는 가장 좋..
2023.01.16 -
동시성과 병렬성.
동시성과 병렬성은 다른 개념이다. 동시성의 경우 실제로 동시성을 의미하는것이 아니라. 사용자가 느끼기에 동시에 이루워 지는 작업을 뜻하고 병렬성이란 실제로 같은 시간에 동작이 병렬적으로 이루워 지는것을 의미한다 cpu의 코어 개수마다 작업을 병렬적으로 한다 라는것은 각각의 코어가 하나씩 동작을잡고 있음으로 볼 수 있으며 동시성의 경우 이 작업중 실시간으로 동작이 변하면서 이루워 지는 작업과 같은것으로 확인 할 수 있을듯 하다. 실제로 동시성의 경우 지속적으로 컨텍스트 스위칭을 하게 되고 이때 공유 자원이라는 것을 사용해서 처리 할 수 있도록 한다. 이때 공유 자원을 읽는 중에 스위칭이 되어 접근되어 있을때 다시 접근 하거나 하는 경우가 발생할 수 있다 .이 때 동시성의 문제가 발생하고 이와 같은 로직에 ..
2023.01.02 -
10장 유닉스
멀틱스 와 유닉스 모두 양파처럼 여러겹으로 구성된 링 모양의 아키텍쳐 를 따름. 유닉스는 멀틱스와 달리 처음 구조자체는 심플한 로직을 토대로 쌓을수 있는 로직 구조도를 따르기로 하였음. 그리고 동작에 비싼 기계가 필요하지 않았음 따라서 멀틱스가 아닌 유닉스가 흥할 수 있는 요인이 되었음. 위와 같은 형태의 설계 방식을 따랏고 각각의 링에서 아래로 내려갈수록 접근할수 있는 부분에 제한을 두게 하였음. 커널링의 목적 은 시스템에 연결된 하드웨어를 관리하는 역할을 하였고 시스템 호출을 통해서 커널의 기능을 제공하는 방식을 이용할 수 있도록 하였다. 따라서 우리가 사용하는 사용자 프로세스는 커널 프로세스와 내부적으로 동작이 확연하게 달라지는 것을 확인 할 수 있다. 사용자 프로세스에서 함수를 호출하면 셸링에서 ..
2022.12.25 -
c 로 하는 추상화
추상화 추상자료형을 다루는것 클래스 기반의 객체지향에서 추상자료형은 추상 클래스와 같다. 필요한 수준보다 더 과도한 추상적인 추상 자료형을 찾을 수 있는데 이를 과도한 추상화 라고 한다. 과도한 추상화는 이득이 있더라도 반드시 피해야 한다. 추상화의 정도는 추상화의 원칙에서 찾을 수 있다. 프로그램의 각 기능은 한 부분에서만 구현되어야 한다. 기본 구현을 갖지 못하는 행위 정확한 값을 가질 수 없는것 을 사용한다거나 하는 방식 을 뜻함,. 자식 클래스가 오버라이딩 할 수 있는 행위함수를 가상함수 라고 불렀음. 이 가상함수만을 포함하는 클래스를 인터페이스 라고 부름 추상 자료형으로 객체를 생성하지 않으려면 할당자 함수를 제거 해야함. c++ 에서 객체지향 구성물 캡슐화 상속, (다중상속 가능) 다형성 다형..
2022.12.12 -
c언어의 상속
8장에서는 추상화와 c언어에서 상속에 대해서 어떻게 해야하는지 알아보는 시간을 갖는다. 이장에서 보고 넘어가야 할 부분은 부모를 자식에 선언해 둘 때 구조체 형식으로 접근할 것 인지. 아니면 구조체 포인터 형식으로 접근할지 에 대한 차이가 존재한다. 이장에서는 이에 대한 차이점이 무엇인지 알아보는 시간을 가진다. 상속의 본질은 내부적으로 합성관계를 가지는 녀석이라고 볼 수 있다 . c언어에서 구조체가 실제 상속을 제공해주거나 하지 않기 때문에 반드시 완벽한 구조체 형식을 가지고 있어야 한다. (불완전한 형식으로 변수 선언 불가능) 또한 부모 구조체의 선언은 최상단에 위치해야 하는데 이는 이유 구조체 변수로 사용하는 경우 부모를 인스턴스화 하여 사용하는 것이 아니기 때문에 부모개체의 정보가 최상단에 위치하..
2022.12.10 -
7장정리.
6장 의 내용을 바탕으로 7장에서는 have-to 관계에 대해서 설명한다. 여기서 합성과 집합에 대해서 설명하는 부분이 존재하고 이 부분이 가장 핵심적인 내용이다. 클래스와 인스턴스의 차이는 (클래스 기반 언어에 해당하는 내용) class 라는 blueprint 를 기반으로 존재 가능하며, 일반적으로 속성에 따라 분리된다. 합성은 한객체가 다른 객체를 포함하거나 소유할때 합성이라고 하며 컨테이너에 포함된 객체의 수명은 컨테이너 객체의 수명에 바인딩 된다. 집합은 컨테이너 객체에 포함된 객체의 수명이 컨테이너 객체 수명과 독립적. 이때 컨테이너 객체가 생성시에 같이 생성되야 하는 경우 의무적 집합, 아니라면 선택적 집합 이라고 한다. 쉽게 보면 합성이란 컨테이너 객체가 해제되기 위해서 내부 객체들이 소멸된..
2022.12.04