본문 바로가기
3. 운영체제 3장 프로세스 간 통신 부모 프로세스와 자식 프로세스pid가 1인 프로세스(systemd)가 루트 부모 프로세스 역할을 하고, 새로 생성되는 프로세스들을 자식 프로세스라 한다.이 자식 프로세스들은 또다시 부모가 될 수 있으며 그 결과 트리를 형성한다. 부모 프로세스가 자식 프로세스를 생성할 때,1. 부모의 메모리 공간을 복사해 줄 수 있다. 전역변수, 힙, 스택 영역이 자식에게 그대로 전달된다. 하지만 복사된 후에는 부모와 자식이 독립적인 메모리 공간을 가진다.(변경해도 서로 영향 x)2. 자식 프로세스는 부모가 갖고 있던 환경변수를 그대로 상속받는다.3. file descriptor를 공유할 수 있다. 부모가 열린 파일을 자식도 동일하게 사용할 수 있다.4. IPC(파이프, 메세지 큐, 공유 메모리, 소켓)를 사용하면 부모가.. 2025. 1. 30.
2. 운영체제 3장 프로세스 기초, 컨텍스트 스위칭 프로세스 메모리 배치운영체제에서 프로세스가 실행될 때 메모리는 여러 영역으로 나뉘어 있다.코드와 전역 변수는 고정된 크기의 영역에 저장되고, 실행 중 생성되는 데이터는 동적으로 할당되는 힙과 스택에 저장된다.스택은 함수 호출과 관련된 정보가 저장되는 곳으로, 호출될 때 데이터를 push하고 끝나면 pop하면서 제거된다.이 때의 데이터를 "activation record"라고 하며, 함수 매개변수, 지역변수, 복귀 주소가 포함된다.마찬가지로 메모리가 동적 할당됨에 따라 힙이 커지고, 메모리가 시스템에 반환되면 축소된다. 정말 유명한 사이트 stack overflow이름의 유래가 이곳이다. 스택 메모리가 과도하게 커지는 것을 스택 오버플로우라고 하는데, 스택 오버플로우의 대표 예시로 순환 참조를 들 수 있다.. 2025. 1. 29.
1. 객체지향의 사실과 오해 초보자의 객체지향에 대한 관점은 이 책을 읽기 전과 후로 나뉜다 -이채영, 1999 ㅋㅋ 있어보이게 좀 써봤다. 명언같나? 튜터님이 추천해주셔서 읽었는데, 왜 나에게 이 책을 추천했는지 이제야 알 것 같다.나는 지금껏 디자인 패턴을 사용하거나 구조를 설계할 때 명확한 이유가 없었다. 그냥 멋있어 보였고, 하고 싶어서 썼을 뿐이다. 하지만 이제야 깨달았다. 내가 객체지향을 너무 쉽게 생각했음을.. 나는 단순히 클래스를 잘 나누고, 화려한 디자인 패턴을 적용하면 그것이 곧 SOLID를 준수한 코드이고 객체지향적인 코드라고 생각했다.틀린 말은 아니겠지만, 근본이 잘못되었다. 내 코드를 비유하자면, 상체는 비대하고 하체는 앙상한 모습이었다. 기본기도 없이 이것저것 덧붙인 결과, 몸뚱이만 커진 꼴이었다. 그렇다면.. 2024. 12. 23.