반응형

개발공부 120

[OS] 좀비 프로세스 & 고아 프로세스

프로세스 생성 부모 프로세스가 자식 프로세스를 만드는 것 PCB에 저장된 pid(process identifier)값으로 프로세스를 식별한다. UNIX에서 프로세스 생성 fork() 시스템 호출은 새로운 프로세스를 만들어내는 기능을 한다. 새로운 프로세스는 원래의 프로세스 주소 공간의 복사본을 가지고 있다. fork() : 현재 돌아가고 있던 프로세스를 복사해서 다른 프로세스를 만든다. exec() : 프로세스로 하여금 다른 바이너리를 가지고 새로 시작하도록 한다. 자식 프로세스는 exec을 통해 내용을 모두 바꾼다. fork와 exec의 차이 exec() 기존 프로세스를 덮어버리게 되는 것. 유닉스 체계에 exec만 존재한다면, init 프로세스는 다른 사용자 프로그램에 덮어지게 되고, 커널이 붕괴된다..

[OS] 메모리 단편화

메모리 단편화 RAM에서 메모리의 공간이 작은 조각으로 나뉘어 사용 가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태 내부 단편화 메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비되는 상황 예시 메모장을 켰는데 OS가 4kb를 할당해줬다. 그런데 사실상 1kb만큼만 사용하고 있을 때 필요 이상으로 프로세스가 메모리를 할당받았으므로 내부 단편화가 3kb만큼 생긴 것이다. 외부 단편화 메모리가 할당되고 해제되는 작업이 반복되어서 작은 메모리가 중간 중간 존재할 때, 사용하지 않는 메모리가 많이 존재해서 총 메모리 공간은 충분하지만 실제로 할당할 수 없는 상태 예시 메모리 처음 주소에 8mb짜리 프로세스가 할당 되엇고 이어서 16mb 프로세스..

[OS] 가상 메모리와 페이지 교체

가상 메모리 다중 프로그래밍을 실현하기 위해서는 많은 프로세스들을 동시에 메모리에 올려두어야 한다. 가상 메모리는 프로세스 전체가 메모리 내에 올라오지 않더라도 실행 가능하도록 하는 기법이다. 장점 프로그램이 물리 메모리보다 커도 된다. (물리 메모리 크기에 제약받지 않는다.) 더 많은 프로그램을 동시에 실행할 수 있게 된다. CPU 이용률과 처리율이 높아진다. swap에 필요한 입출력이 줄어들어 프로그램이 빠르게 실행된다. 요구 페이징 프로그램 실행 시작 시 프로그램 전체를 디스크에서 물리 메모리에 적재하는 대신, 초기에 필요한 것들만 적재하는 전략 페이지 교체 요구 페이징에서 언급한 대로 프로그램 실행 시 모든 항목이 물리 메모리에 올라오지 않기 때문에, 프로세스의 동작에 필요한 페이지를 요청하는 과..

[WPF] 데이터 바인딩 (Data Binding) 이란

데이터 바인딩 앱 UI와 해당 UI가 표시하는 데이터를 연결하는 프로세스. 데이터 바인딩 사용하는 이유 데이터 값에 변화가 필요할 때 사용한다. 예시 데이터 값이 변경되어 UI에도 변경 사항이 반영되어야 할 때 UI에서 데이터 값을 변경되어 내부 데이터가 자동으로 업데이트되어야 할 때 데이터 흐름 방향 소스 : 데이터 변수 타깃 : UI에 보여지는 부분 1. OneWay Binding 소스가 변경될 때마다 타깃이 갱신된다. 2. TwoWay Binding 타깃이나 소스 둘 중에 한 쪽이 변경되면 서로 갱신한다. 3. OneWayToSource 타깃이 변경될 때마다 소스가 갱신된다. 4. OneTime 바인딩 클래스가 인스턴스화될 때 한 번 타깃에 반영되고 그 뒤로 소스가 변경되어도 타깃에 반영되지 않는다..

개발공부/WPF 2021.11.09

[OS] 프로세스와 스레드, 멀티 프로세스와 멀티 스레드 설명, 차이, 예상질문

프로그램(Program) 어떤 작업을 위해 실행할 수 있는 파일 프로그램을 실행하면 프로세스가 된다. 프로세스(Process) 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 운영체제로부터 시스템 자원을 할당받는 작업의 단위 Code : 코드 자체를 구성하는 메모리 영역 프로그램 명령 Data : 전역 변수, 정적 변수, 배열 등 초기화된 데이터 Heap : 동적 할당 시 사용 new(), mallock() 등 Stack : 지역변수, 매개변수, 리턴 값 임시 메모리 영역 기본적으로 프로세스당 메인 스레드를 포함하여 최소 1개의 스레드를 소유한다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수..

[DB] 데이터베이스 트랜잭션이란?

트랜잭션 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위. 한꺼번에 모두 수행되어야 할 일련의 연산들을 말한다. 트랜잭션 특징 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다. 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위이다. 하나의 트랜잭션은 Commit 되거나 Rollback 된다. 트랜잭션의 성질 원자성(Atomicity) 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 전혀 반영되지 않아야 한다. 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두 완벽히 수행되지 않고 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다. 일관성(Consistency) 트랜잭션이 실행을..

[WPF] 의존 프로퍼티(Dependency Property) 이해하기

의존 프로퍼티란? 프로퍼티 값이 변경되었을 때 자동으로 어떤 일을 처리하게 할 수 있게 해주는 것. 스타일링, 데이터 바인딩, 애니메이션 등 WPF 주요 부분에 사용된다. 의존 프로퍼티 사용 이유 (장점) 의존 프로퍼티를 사용하면 엘리먼트를 사용하는 시점에 프로퍼티 값이 결정되고, Static 변수이기 때문에 메모리 절약에 효과적이다. 프로퍼티를 구현할 때 필요한 많은 코드를 표준화할 수 있다. 일반 프로퍼티와 다른 점 의존 프로퍼티에는 값이 변경되었을 때 자동으로 알림을 주는 "변경 통보" 기능이 있다. 일반적인 플랫폼은 데이터 값이 변경되었을 때 UI도 변경되는 기능이 많은데, 이럴 때 의존 프로퍼티를 사용해서 편리하게 구현할 수 있다. 구현 예시 1. 의존 프로퍼티를 등록한다. 의존 프로퍼티 등록 ..

개발공부/WPF 2021.11.08

[WPF] 라우티드 이벤트(Routed Event) 이해하기

라우티드 이벤트란? 엘리먼트 트리 구조에서 잘 동작하도록 설계된 이벤트 라우티드 이벤트 사용 이유 (장점) 라우티드 이벤트가 발생하면 특정 코드가 없어도 간편하고 일관성 있게 비주얼/로지컬 트리 상의 각 엘리먼트마다 이벤트를 일으키면서 위아래로 이동할 수 있다. 라우티드 이벤트 전략 종류 1. 터널링 루트 엘리먼트에 있는 이벤트가 먼저 일어나고 이후 자식 엘리먼트의 이벤트가 차례대로 일어난다. 2. 버블링 소스 엘리먼트에서 먼저 일어나고, 이후 부모 엘리먼트의 이벤트가 차례대로 일어난다. 3. 다이렉트 소스 엘리먼트에서 한 번만 일어난다. 구현 예시 1. 라우티드 이벤트 등록 public static readonly RoutedEvent ClickEvent = EventManager.RegisterRou..

개발공부/WPF 2021.11.07

[DB] 데이터베이스 언어 종류 | 데이터베이스 키 종류 | 무결성 제약조건

데이터베이스 언어 데이터 정의어 데이터베이스 개채를 생성, 변경, 삭제하기 위한 명령어. Create, Alter, Drop 데이터 조작어 데이터를 검색, 추가, 삭제, 업데이트하기 위한 명령어. Select, Insert, Delete, Update 데이터 제어어 보안 및 권한 제어, 무결성, 회복, 병행 제어를 위한 명령어. Grant, Revoke, Commit, Rollback 등 외래키와 기본키 열의 데이터 형식과 저장 공간의 크기가 일치해야 하는 이유 데이터 형식이나 저장 공간의 크기가 다르면, 논리적으로는 같은 값이라고 하더라도 물리적인 이진 값은 같지 않기 때문이다. 데이터베이스 키 What is key? 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별..