본문 바로가기

Programming II52

[OSTEP] 제5장 막간: 프로세스 API - Unix는 프로세스를 생성하기 위하여 fork()와 exec() 시스템 콜을 사용한다.- wait()는 프로세스가 자신이 생성한 프로세스가 종료되기를 기다리기 원할 때 사용된다. 핵심 질문 : 프로세스를 생성하고 제어하는 방법- 프로세스를 생성하고 제어하려면 운영체제가 어떤 인터페이스를 제공해야 하는가?- 유용하고 편하게 사용하기 위해서 이 인터페이스는 어떻게 설계되어야 하는가?5.1 fork() 시스템 콜- 프로세스 생성에 fork() 시스템 콜이 사용된다.- Unix 시스템에서 PID(프로세스 식별자)는 프로세스의 실행이나 중단과 같이 특정 프로세스를 대상으로 작업을 해야 할 경우 프로세스를 지칭하기 위해 사용된다. - 프로세스는 fork() 시스템 콜을 호출한다. 운영체제는 프로세스 생성을 위해.. 2025. 4. 1.
[OSTEP] 제4장 프로세스의 개념 - 운영체제가 제공하는 핵심 개념 중 하나인 프로세스에 대해 논의한다. 일반적으로 프로세스는 실행 중인 프로그램으로 정의한다.   - 프로그램 자체는 생명이 없는 존재다. 프로그램은 디스크 상에 존재하며 실행을 위한 명령어와 정적 데이터의 묶음이다. 이 명령어와 묶음을 읽고 실행하여 프로그램에 생명을 불어넣는 것이 운영체제이다. 핵심 질문 : CPU가 여러 개 존재한다는 환상을 어떻게 제공하는가- 적은 개수의 CPU 밖에 없더라도, 운영체제는 어떻게 거의 무한개에 가까운 CPU가 있는 듯한 환상을 만들 수 있을까?- 운영체제는 CPU를 가상화하여 이러한 환상을 만들어 낸다. 하나의 프로세스를 실행하고, 얼마 후 중단시키고 다른 프로세스를 실행하는 작업을 반복하면서 실제 하나 또는 소수의 CPU로 여러 개.. 2025. 4. 1.
[OSTEP] 제2장 운영체제 개요 - 프로그램은 매우 단순한 일을 한다: 명령어를 실행한다.   - 프로세서는 명령어를 초당 수백만 번 (요즘은 수십억 번) 반입(fetch) 하고, 해석(decode)하고 (즉, 무슨 명령어인지 파악하고), 실행(execute)한다. (즉, 두 수를 더하고, 메모리에 접근하고, 조건을 검사하고, 함수로 분기하는 등의 정해진 일을 한다). 명령어 작업을 완료한 후 프로세서는 다음 명령어로, 또 그 다음 명령어로 프로그램이 완전히 종료될 때까지 실행을 계속한다. - 프로그램을 쉽게 실행하고 (심지어 동시에 여러 개의 프로그램을 실행시킬 수도 있음), 프로그램 간의 메모리 공유를 가능케 하고, 장치와 상호작용을 가능케하고, 다양 흥미로운 일을 할 수 있게 하는 소프트웨어가 있다.   - 시스템을 사용하기 편리.. 2025. 4. 1.
[전문가를 위한 C++] CHAPTER3 코딩 스타일 3.1 코딩 스타일의 중요성3.1.1 가늠해보기3.1.2 바람직한 스타일의 기준- 바람직한 코드 작성 스타일의 정확히 제시하기는 쉽지 않다. 시간이 갈수록 자신만의 선호하는 스타일이 생기고, 다른 사람이 작성한 코드를 보다가 좋은 스타일을 발견할 때도 있기 때문이다. - 잘 작성된 코드에서 볼 수 있는 공통적인 속성을 다음과 같이 골라낼 수 있다.문서화코드 분해명명 규칙언어 사용코드 서식(포매팅)3.2 코드 문서화- 프로그래밍에서 말하는 문서화란 주로 소스 파일에 주석을 다는 것을 의미한다.3.2.1 주석을 작성하는 이유- 주석을 작성해야 하는 여러가지 이유를 알아보자.+ 사용법을 알려주는 주석   - 함수가 던지는 익셉션, 매개변수, 리턴 타입 등에 대한 설명을 명시해줄 수 있다.- 회사의 코딩 가이드.. 2025. 3. 30.
[전문가를 위한 C++] CHAPTER2 스트링과 스트링 뷰 다루기 - C언어를 사용하던 시절에는 단순히 널로 끝나는 문자 배열로 스트링을 표현했다. 하지만 이렇게 하면 버퍼 오버플로를 비롯한 다양한 문제 때문에 보안 취약점이 드러날 수 있다.    - C++ 표준 라이브러리는 이러한 문제를 방지하기 위해 보다 안전하고 사용하기 쉬운 std::string 클래스를 제공한다.2.1 동적 스트링 172- 스트링을 주요 객체로 제공하는 프로그래밍 언어를 보면 대체로 스트링의 크기를 임의로 확장하거나, 서브스트링(부분 문자열)을 추출하거나 교체하는 것과 같은 고급 기능을 제공한다.- 반면 C와 같은 언어는 스트링을 부가 기능처럼 취급한다. 그러므로 스트링을 언어의 정식 데이터 타입으로 제공하지 않고, 단순히 고정된 크기의 바이트 배열로 처리했다. - C언어의 스트링 라이브러리는.. 2025. 3. 30.
[전문가를 위한 C++] CHAPTER1 C++와 표준 라이브러리 초단기 속성 코스 1.1 C++의 기초- C++는 흔히 C의 개선판 또는 C의 상위 집합으로 알려져 있다.   - C++는 원래 C에 객체지향 개념을 추가하려는 목적으로 설계했기 때문에 클래스가 추가된 C라고도 부른다.1.1.1 프로그래밍 언어의 공식 예제 'Hello, World'import // C++20 이전 버전에서는 #include int main(){ std::out  + 주석- 주석은 프로그래머에게 전달하는 메시지며 컴파일러는 이 부분을 무시한다.   - 슬래시 두 개를 연달아 적으면 그 지점부터 그 줄 끝까지 나오는 모든 문자를 주석으로 처리한다.   - 여러 줄 주석은 /*로 시작해서 */로 끝나며, 그 사이의 모든 문자를 주석으로 처리한다. + 모듈 임포트- 모듈은 예전에 헤더 파일이라 부르던 메커.. 2025. 3. 30.