[자료구조] Stack / Queue
·
카테고리 없음
Stack 스택이란? 스택(stack)이란 쌓아 올린다는 것을 의미한다. 따라서 스택 자료구조라는 것은 책을 쌓는 것처럼 차곡차곡 쌓아 올린 형태의 자료구조를 말한다. ⇒ LIFO(Last Input First Output) : 스택은 시간 순서에 따라 자료가 쌓여서 가장 마지막에 삽입된 자료가 가장 먼저 삭제된다는 구조적 특징을 가지게 된다. 스택의 특징 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을 수 있다. top으로 정한 곳을 통해서만 접근할 수 있다. top은 가장 위에 있는 자료, 최근 자료를 가리키고 있으며, 삽입되는 새 자료는 top이 가리키는 자료의 위에 쌓이게 된다. 스택에서 자료를 삭제할 때도 top을 통해서만 가능하다. 스택의 사용 public class StackExample{..
Dead lock(교착상태)
·
수업정리/운영체제
자바 쓰레드를 공부하던 중에 교착상태에 관한 내용을 정리했습니다. 운영체제에서도 마찬가지로 프로세스 관리 차원에서 교착상태를 주의 해야한다는 내용이 있었습니다. Deadlock(교착상태) 두개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료하지 못하는 상태 한정된 자원을 얻지 못해 다음 처리를 진행하지 못하는 상태를 말한다. Deadlock 발생 조건 다음의 네가지 상황을 동시에 만족할 때 Deadlock 이 발생할 수 있다. 상호 배제(mutual exclusion) 하나의 공유자원에 대해 두개 이상의 프로세스가 동시에 접근 점유 대기(hold and wait) 하나의 자원을 점유하고 있는 프로세스가 있고, 해당 프로세스가 다른 프로세스에서 자원을 얻기 위..
[운영체제] Operating System이란?
·
수업정리/운영체제
Os의 역할 사용자가 응용 프로그램을 실행할 수 있는 기반 환경을 제공하여 컴퓨터를 편리하게 사용할 수 있도록 도와주고, 하드웨어를 효율적으로 사용할 수 있도록 다양한 기능을 제공하는 소프트웨어이다. 컴퓨터 자원을 관리하는 면에서 운영체제의 역할은 다음과 같다. 제어자(controller) 다른 프로그램이 작업을 할 수 있는 환경만 제공하는 컨트롤러의 역할을 한다. 자원 할당자 또는 관리자(resource allocator or administrator) 운영체제는 물리적인 자원(CPU, DRAM, Disk, Flash, Network)를 가상화 시켜서 더 공정하고 효율적으로 자원을 관리할 수 있도록 해주는 관리자 역할을 한다. 응용프로그램과 입출력장치 제어자 운영 체제는 제어 프로그램으로서 사용자 프로..
[java] Linkedlist와 Arraylist의 차이는 무엇일까?
·
etc.
Linkedlist와 Arraylist는 둘 다 List인터페이스를 상속받아서 구현한 클래스이다. ArrayList 원소들을 인덱스로 접근하여 배열과 사용법이 매우 유사합니다. 배열은 초기에 생성할 때 크기를 정해줘야 하므로 유동적인 사이즈로 초기화할 수 없는 불편함이 있지만 대안으로 쓰이는 ArrayList는 저장되는 데이터의 갯수에 따라 자동적으로 크기가 변경되어 배열대신 자주 사용합니다. 배열은 크기를 변경할 수 없는 인스턴스이므로, 크기를 늘리기 위해서는 새로운 배열을 생성하고 기존의 요소들을 옮겨야 하는 복잡한 과정을 거쳐야 합니다. 물론 이 과정은 자동으로 수행되지만, 요소의 추가 및 삭제 작업에 걸리는 시간이 매우 길어지는 단점을 가지게 됩니다. Linkedlist ArrayList와 장단점..
[java]자바 컴파일 과정
·
etc.
JVM은 어떤 방식으로 코드를 해석하고 실행시키는지 흐름에 맞게 설명해 주세요. (Java 실행 흐름) 자바는 os에 독립적인 특징을 가지고 있다. 이게 가능한 이유는 JVM(java virtual machine)이 os와 프로그램의 사이에서 기계어로 해석해주는 역할을 하기 때문이다. 자바 컴파일러에 의해 변환된 java 바이트 코드(.class)는 os에 의존하지 않고 JVM위에서 작동한다. jvm은 운영체제에 종속적이기 때문에 해당하는 os에 맞는 jvm설정을 해줘야 한다. 자바의 동작 방법 hello.java -> javac.exe(자바 컴파일러) -> hello.class생성 -> java.exe(자바 인터프리터) -> "hello world"출력 자바 컴파일 순서 개발자가 자바 소스코드(.jav..
[java] 자바의 특징
·
etc.
OOP(객체 지향 언어 프로그래밍) oop는 코드의 재사용성을 증가하고 유지보수를 용이하게 만듭니다. 객체 지향 프로그래밍의 대표적 특징 상속 (Inheritance) : 부모 클래스의 변수와 메서드를 자식 클래스가 전부 물려받는 것입니다. 캡슐화 (Encapsulation, Information Hiding) : 객체의 변수 및 메서드를 외부 객체가 함부로 건드리지 못하게 감싸는 개념입니다 . 클래스의 getter/setter 등을 통해 은닉합니다. 다형성(Polymorphism) Poly(다양한) + morphism(변형,변신) 의 합성어입니다. 하나의 객체가 여러가지 타입을 가질 수 있는 것을 의미합니다. 자바에서는 한 레퍼런스 변수가 다른 형태의 객체를 참조할 수 있음을 말합니다. 오버로딩, 오버..
ch7 분할정복
·
etc.
https://book.algospot.com/은 새로운 알고리즘 책입니다. 종이에 적힌 의사코드" data-og-host="book.algospot.com" data-og-source-url="https://book.algospot.com/" data-og-url="https://book.algospot.com/" data-og-image=""> 알고리즘 문제 해결 전략프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략, 구종만 지음, 인사이트, ISBN 978-89-6626-054-6 새 소식 책 소개 은 새로운 알고리즘 책입니다. 종이에 적힌 의사코드book.algospot.com스터디를 하면서 공부한 내용을 정리하기 위해 기록한 내용입니다.7.1 도입분할정복(Divide & ..
[OS]Process란?
·
수업정리/운영체제
Process란? 프로세스(Process)는 실행중에 있는 프로그램을 말한다. 스케줄링이 되는 대상이 되는 작업(task)와 같은 의미로 쓰인다. 프로세스 내부에는 최소 하나의 스레드(thread)를 가지고 있는데 실제로는 스레드 단위로 스케줄링을 하게 된다. Context Switch(문맥교환)을 통해 작업중인 프로세스에 할당한 CPU를 할당 / 회수 할 수 있다. 하드디스크에 있는 프로그램을 실행하면, 실행을 위해 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다. 이 순간부터 프로세스라 불린다. Process의 메모리 구조 code : 프로그램을 실행시키는 실행파일 내의 명령어들(소스코드) data : 전역변수, static 변수 stack : 지역변수, 함수, 반환 ..
okbear3
'분류 전체보기' 카테고리의 글 목록 (3 Page)