객체지향 프로그래밍 OOP 코드를 객체 단위로 나누어 코딩하는 방식으로 다음과 같은 장점이 있다. 코드 재사용성이 높다. 새로운 코드를 작성할 때 기존의 코드를 이용해서 쉽게 작성할 수 있다. 코드 관리가 용이하다. 코드 간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. 신뢰성이 높은 프로그래밍이 가능하다. 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 한다. 코드의 중복을 제거하여 코드의 불일치로 인한 오작동을 방지할 수 있다. OOP의 특징 캡슐화 필드 변수와 메서드를 클래스로 감싸는 것 캡슐화로 인해 모듈화가 가능하여 유지보수성을 높힐 수 있다. 정보은닉 캡슐화로 인해 감싸진 데이터들에 접근 제어자 public, private 등을 활용해서 외부에서 접근하지 못..
멀티 스레딩 코드와 데이터 영역을 공유하기 때문에 shared memory가 따로 필요하지않고 생성 리소스도 훨씬 작고, context switching 비용도 적게든다. 전체적으로 리소스 효율이 좋고 확장성도 좋다. 또한 프로세스에 대한 요청을 처리할 때 스레드를 생성해서 non-blocking으로 빠르게 처리할 수 있다. 멀티 코어 프로그래밍 이전에 공부했던 멀티 프로그래밍은 여러 개의 프로그램이 동시에 돌아가는 것 처럼 보이는 방법이었다. 하지만 멀티 코어 프로그래밍은 코어가 여러 개이기 때문에 실제로 동시에 프로그램을 실행할 수 있다. 이러한 방법을 병렬 실행 Parallel execution이라고 한다. 동시 실행을 할 경우의 문제. 어떤 작업을 병렬로 작업할 수 있는가? 작업을 동시에 처리해야..
프로세스의 생성 UNIX 기반 OS에서는 fork() system call을 호출해서 프로세스를 생성한다. fork()는 자식 프로세스를 생성하는 system call이기 때문에 부모 프로세스의 주소 공간을 복사한다. fork()한 이후 부모 프로세스를 진행할 수도 있고, 자식 프로세스가 종료되는 것을 wait()할 수도 있다. wait()를 호출하면 자식 프로세스가 종료될 때까지 블록 상태로 기다렸다가 종료되면 블록이 풀린다. 프로세스 생성 횟수 fork()를 n 번 했을 때 생성된 프로세스도 다음 fork() 내용을 수행하기 때문에 총 실행되는 프로세스의 수는 2^n이 된다. IPC 동시에 여러 프로세스가 실행될 때 프로세스는 독립적으로 실행될 수도 있고, 서로 협력하여 실행할 수도 있다. Indep..
Process State OS가 프로세스를 관리하는 과정에서 프로세스에는 5가지 상태가 존재한다. New: 프로세스가 생성됐을 때의 상태 Ready: 프로세스가 프로세서에게 선택될 때까지 큐에서 기다리고 있는 상태 Running: 프로세서에 선택되어 명령을 수행하고 있는 상태 Waiting: I/O Event가 발생해서 I/O가 끝날 때까지 기다리고 있는 상태 Terminated: 프로세스가 종료된 상태 PCB (=TCB) OS가 프로세스를 관리하기 위해 Process(=Task) Control Block이라는 구조체(=클래스)를 만들어서 각 프로세스가 가져야하는 모든 정보를 저장한다. PCB가 가지고 있는 주요 정보 Process State: 프로세스의 현재 상태 Program Counter (PC) ..
OS란? Application과 H/W의 interface 역할을 하는 Software로 CPU, Memory, I/O 장치 등 리소스를 관리한다. 운영체제의 역할 자원 관리: 자원들을 효율적으로 관리하여 응용 프로그램이 자원을 공유하고 사용할 수 있도록 한다. 추상화: 하드웨어와 응용 프로그램 사이의 복잡한 상호작용을 추상화하여 응용 프로그램이 하드웨어의 세부 사항을 몰라도 사용할 수 있도록 해준다. 프로세스 관리: 프로세스(실행 중인 프로그램)의 생성, 실행, 일시 중지, 종료 등을 관리하여 프로그램들이 동시에 실행될 수 있도록 합니다. 메모리 관리: 메모리를 효율적으로 할당하여 여러 프로그램이 메모리를 공유하고 충돌하지 않도록 관리한다. 파일 시스템 관리: 파일과 디렉터리를 생성, 읽기, 쓰기, 삭..
IAM이란? AWS Identity and Access Management의 약자로, AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스이다. IAM을 사용하면 사용자가 액세스할 수 있는 AWS 리소스를 제어하는 권한을 중앙에서 관리할 수 있고, 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어한다. IAM으로 할 수 있는 것들 사용자 관리: IAM을 통해 사용자 계정을 생성하고 관리할 수 있다. 각 사용자는 고유한 액세스 키와 비밀 액세스 키를 가지며, 이를 사용하여 AWS 서비스에 접근할 수 있다. 그룹 관리: IAM 사용자를 그룹으로 묶어서 권한을 한번에 할당하거나 취소할 수 있다. 그룹은 특정 업무나 역할에 따라 사용자를 묶어서 효율적으로 권한을 관리하는데 ..