전체 글

전체 글

    [운영체제] 프로세스와 스케줄러

    보호되어 있는 글입니다.

    [운영체제] 운영체제란? 커널, 시스템 콜, 커널 모드

    [운영체제] 운영체제란? 커널, 시스템 콜, 커널 모드

    | 요약 - 운영체제는 커널 + 기타 기능 - 운영체제는 시스템 콜을 제공 (쉘은 사용자와 OS간 인터페이스) - 프로그램 언어별로 OS별 API를 제공 - 응용 프로그램에서 API로 시스템 콜 호출 시, 커널 모드로 변환, OS내부에서 명령 처리 후 리턴 | 운영체제란? 운영체제 (OS : Operating System) : 사용자의 편의를 위한 환경을 제공하는 시스템 소프트웨어 - 종류 : 윈도우, 유닉스 계열(리눅스), MacOS - 운영체제는 일반적으로는 커널에 여러가지가 추가된 상태를 의미하지만, 좁은 의미로 "커널(kernel)" 자체를 말합니다. pf. General Purpose OS vs Embeded OS General Purpose OS Embeded OS 컴퓨터에서 사용되는 OS *..

    객체지향 언어의 특징 4_캡슐화 (정보 은닉)

    | 캡슐화 (정보 은닉) 앞에서 상속과 다형성을 이야기할 때, 캡슐화의 원칙에 대해 언급했었다. - 상속의 단점으로 상위 객체의 정보가 하위 객체에서 노출될 수 있고, 그것은 곧 캡슐화의 원칙을 깨는 것이라고 했다. - 다형성 또한 instanceof를 통해 부모가 참조하고 있던 실제 자식 인스턴스를 외부에서 노출하면 캡슐화의 원칙이 깨졌다. 여기에서도 유추할 수 있는 캡슐화의 의미는 "정보 은닉"이다. 캡슐화 : 정보를 객체 내부로 숨겨 외부로부터 감추는 것 | 접근 제어자와 참조변수 1. 접근 제어자의 UML 표현 - private 자기 자신만 접근 가능 ~ default 같은 패키지 내 # protected 상속 또는 같은 패키지 내 + public 모두가 접근 가능 _ static - - 캡슐화를..

    객체지향 언어의 특징 3_다형성 (사용 편의성)

    객체지향 언어의 특징 3_다형성 (사용 편의성)

    | 다형성 (사용 편의성) 다형성이란, 하나의 객체가 여러가지 타입을 가질 수 있는 것을 의미한다. 다형성은 오버로딩과 오버라이딩을 통해 구현할 수 있다. 오버라이딩이 가능한 이유는 뭘까? 그건 동적 바인딩 때문이다. 여기서 동적 바인딩이란 메서드가 실행 시점에서 성격이 결정되는 것을 말한다. 종류 정적바인딩(static binding) 동적바인딩(Dynamic binding) 정의 컴파일 시간에 성격이 결정 실행 시간(런타임)에 성격이 결정 예시 C언어 컴파일 시간에 변수의 데이터타입이 결정 ex. int *p; -- 미리 데이터타입 지정 javascript 런타임에 값에 따라 변수의 데이터타입 결정 ex. var c = 1; -- 미리 데이터타입 지정x ex. Person p = new Person(..

    [선형자료구조] 해시테이블

    [선형자료구조] 해시테이블

    | 요약 종류 구분 내용 언제 쓰는 게 좋을까 HashTable 특징 - 해싱 함수를 통해 키 -> 해시로 변환한다 - key + value - 특정 키와 값을 연결할 때(알파벳-단어, 사전, 전화번호부) - 중복을 제거해야할 때(전체 명단 중 투표 여부 확인) 장점 - 해시 충돌이 없을 때 검색, 삽입, 삭제가 빠르다 (시간복잡도 : 평균 O(1), 최악 O(n)) - 보안성이 높다 (Key와 Hash간의 연관성X) - 데이터 캐싱에 자주 사용된다. - 중복 제거에 유리하다. 단점 - 해시 충돌 : key1과 key2가 해시함수를 거쳐 동일한 해시값(공간)을 가지는 상태 - 공간 복잡도가 커진다 - 순서가 있는 경우에는 맞지 않는다 - 해시 함수 의존도가 높다 - 해시 테이블은 키와 값을 대응시켜 저장..

    [선형자료구조] 스택, 큐, 데크

    | 스택 종류 구분 내용 언제 쓰는 게 좋을까 Stack 특징 - 후입선출(LIFO) - top / bottom - push, pop, peek - 데이터가 입력된 순서의 역순으로 처리되어야 할 때 Ex. - 함수 콜스택,역추적,인터럽트 처리 - 재귀, DFS - 괄호 검사, 후위 연산, 문자열 역순출력, 실행취소 장점 - top을 통한 접근, 삽입, 삭제가 빠르다. (시간복잡도 O(1)) 단점 - top 이외의 데이터에 접근 불가(탐색x) - 스택은 마치 옷을 겹겹히 쌓듯 데이터를 쌓아 올렸다가 맨 위에서부터 꺼내는 구조이다. - 스택에 대한 알고리즘 문제를 보면, "괄호 검사", "후위 연산", "문자열의 역순 출력", "실행 취소"와 같이 [ 넣었다가 위에서부터 빼는 행위 ]를 통해 문자열의 특정 ..

    [선형자료구조] 연결리스트

    [선형자료구조] 연결리스트

    | 요약 종류 구분 내용 언제 쓰는 게 좋을까 LinkedList 특징 - 각 노드가 연결된 상태 - 각 노드의 메모리 주소는 항상 연속적이지 않다. - head / tail (양방향 이상) - 자료의 삽입과 삭제가 많은 경우 장점 - 데이터의 삽입 및 삭제가 잦을 때 유리 * 삽입, 삭제 시 새로운 배열 생성 없이 링크만 연결한다. 단점 - 특정 인덱스를 조회하는 데 시간이 O(n)만큼 소요된다. * 처음~끝까지 인덱스를 돌기 때문에 Array보다 느리다. 양방향 - 각 노드가 prev / next 두 가지의 연결점을 가진다. 원형 - head -> tail -> head 식으로 원형으로 연결된 상태 - 연결리스트는 각 노드가 연결된 상태로, 삽입과 삭제가 용이하다. - 다만, 연결리스트는 조회에는 취..

    객체지향 언어의 특징 2_상속 (재사용 + 확장)

    객체지향 언어의 특징 2_상속 (재사용 + 확장)

    | 상속 (재사용 + 확장) - 부모 - 자손의 상속 관점 보다는, 재사용과 확장으로 접근하는 것이 좋다 - 상속은, 상위 클래스의 특성을 하위 클래스에서 재사용하고, 거기에 덧붙여 확장할 수 있는 것을 말한다. - 관계 : 상위 - 하위 / 슈퍼 - 서브 * 상위로 갈수록 추상화, 일반화되며 * 하위로 갈수록 구체화, 특수화된다. - 상속을 표현하는 문장 구분 - 설명 포함 has a 클래스 내에서 인스턴스를 형성하여 사용 상속 is a kind of 클래스를 extends (확장하다) 구현 is able to 인터페이스를 implements (구현하다) - 오버라이딩 : 상속 관계에 있는 상위 클래스로부터 물려 받은 메소드를 재정의한 것 | 상속의 장단점 장점 - 모듈화*를 통한 재사용 - 유지보수가..

    객체지향 언어의 특징 1_추상화 (모델링)

    | 추상화 (모델링) - 현실 세계의 객체에서 필요한 부분만 뽑아 클래스로 만드는 작업을 말한다. 추상화란 구체적인 것을 분해하여 관심 영역에 있는 특성만 가지고 재조립하는 것(= 모델링) [출처] 스프링 입문을 위한 객체 지향의 원리와 이해 | 추상화가 모델링인 이유 관심 영역(앱의 경계)에 따라 클래스 모델링이 달라진다. - 현실 세계에서 물리적으로는 동일한 실체에 대해서도 관심 영역(여기서는 애플리케이션에 적용할 영역)이 어디냐에 따라서, 클래스 모델링이 달라진다. Ex. 사람(객체)을 동물로 본다면 "다리 갯수", "자손 생식 방식" 등을 보겠지만, 고객으로 본다면 "연령대", "지출금액" 등을 볼 것이다. | 추상화의 예시 [1] 상속을 통한 추상화와 구체화 - 상속 관계에서 상위 클래스로 올라..

    객체지향 프로그래밍이란?

    | 객체지향 프로그래밍 / 절차지향 프로그래밍 절차 지향 프로그래밍(PP) 객체 지향 프로그래밍(OOP) 특징 일련의 동작(모듈, 함수)를 순차적으로 실행 객체(속성 + 기능) 간의 상호작용을 이용 포커스 명령어의 순서와 흐름 데이터의 속성(필드)과 기능(메서드) 장점 컴퓨터의 처리구조와 비슷해 속도가 빠르다 재사용성(상속), 유지보수 용이, 자연스러운 모델링* 단점 규모가 커질 수록, 추가 개발 및 유지보수 어려움 느린 개발 속도와 실행 속도. 높은 난이도 * 객체지향 프로그래밍은 하나의 방법론이지, 그것이 언어나 제품을 의미하는 것은 아니다. * OOP나 PP 외에 CBD(Component-based development), SOA(Service-orient development)등 프로그래밍 방법론..