Computer Science

Computer Science/운영체제

[CS / 운영체제] 컴퓨터 부팅(Booting) 과정

부팅(Booting)이란?컴퓨터를 켜서 동작시키는 절차.처음 컴퓨터를 켜면 메모리에는 아무것도 올라와 있지 않다. 컴퓨터가 동작하게 하기 위해 운영체제 커널을 특정 주소의 물리 메모리로 올려서 실행되도록 하는 절차를 말한다.부팅 과정컴퓨터에 전원을 공급ROM에서 BIOS 프로그램을 RAM에 올린다. (1)BIOS는 POST(Power-On Self Test) 실행 BIOS는 Boot Loader를 RAM에 올린다. (2)Boot Loader는 Boot 프로그램을 RAM에 올리고 실행한다. (3) (이제 Boot 프로그램이 Memory에 올라가 있는 상태이다.)Boot 프로그램은 운영체제 커널 이미지를 RAM에 올리고 실행한다.(4)부팅 과정 종료 ROM(Read-Only Memory)과 RAM(Rando..

Computer Science/운영체제

[CS / 운영체제] 프로세스와 스레드, IPC, 멀티 스레드

프로세스(Process) 란? 프로세스는 실행 중인 프로그램을 말한다. 스케쥴링의 대상이 되는 작업, Task, Job 등과 같은 용어이다. 응용 프로그램과 프로세스는 같은 용어가 아니다. 예를 들면 excel 프로그램은 excel.exe라는 실행 파일로 존재한다. 이 파일은 컴퓨터가 이해할 수 있는 0과 1로 된 바이너리로 구성되어 있고, excel.exe를 실행해서 excep 프로그램이 뜨면, 이를 프로세스라고 한다. excel 프로그램을 여러 개 여러 개 띄우면, 여러 개의 프로세스가 실행되는 것이다. 프로세스 스케쥴링 여러 개의 프로세스가 동시에 실행되고 있을 때, 어떤 프로세스를 먼저 실행시킬지에 대한 규칙이 있어야 한다. 이를 프로세스 스케쥴링이라고 한다. 배치 처리 시스템, 시분할 시스템, ..

Computer Science/운영체제

[CS / 운영체제] 운영체제란? OS 용어 정리 - 쉘, 시스템콜, API

운영체제 (Operating System) User가 사용하는 응용 프로그램(Application)과 하드웨어 사이에서 동작하는 프로그램을 말한다. Windows, MacOS, UNIX(Linux) 등이 운영체제에 해당된다. OS는 더 상세히 커널(kernel)을 의미하고, 이 커널에 여러 가지가 추가된 것을 운영체제라고 말한다. 💡운영체제는 사용자가 사용하는 응용 프로그램이 효율적으로, 적절하게 동작하도록 지원한다. 즉, 응용 프로그램이 요청하는 시스템 리소스를 효율적으로 분배하고, 지원하는 소프트웨어이다. 커널(kernel) 커널은 운영체제에서 가장 중요한 소프트웨어로, 컴퓨터의 자원들을 관리하는 역할을 한다. 하드웨어의 자원을 프로세스에 할당하고, 프로세스 제어, 메모리 관리, 시스템콜 수행 등을 ..

Computer Science/프로그래밍 이론

[CS] 프로그래밍 패러다임 (선언형, 함수형, 객체지향, 절차지향)

프로그래밍 패러다임 (programming paradigm) 프로그래밍 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론이다. 객체지향 프로그램이과 함수형 프로그래밍을 예로 들어보자. 객체지향 프로그래밍 : 상호작용하는 객체들의 집합 함수형 프로그래밍 : 상태 값을 지니지 않는 함숫값들의 연속 Java의 프로그래밍 패러다임 jdk 1.8 이전의 자바는 객체지향 프로그래밍을 지원했었지만, 이후로는 함수형 프로그래밍 패러다임을 지원하기 위해 람다식, 생성자 레퍼런스, 메서드 레퍼런스를 도입했다. 추가로 선언형 프로그래밍을 위해 스트림(stream) 표준 API도 추가했다. 선언형 프로그래밍과 함수형 프로그래밍 선언형 프로그래밍(declarative programming)은 '..

Computer Science/프로그래밍 이론

[CS] SOLID : 객체지향 설계 5 원칙

SOLID 객체지향의 4대 특성에 기반하기 때문에 5가지 모두 유사한 모양을 가지고 있다. 1. SRP(Single Resoponsibility Principle) : 단일 책임 원칙 클래스는 하나의 기능만 가지며, 어떤 변화에 의해 클래스를 변경해야 하는 이유는 오직 한 가지뿐이어야 한다. 변경에 의한 연쇄작용 감소 가독성 향상 유지보수 용이 서로 밀접한 관계가 있는 기능끼리 클래스로 묶고, 서로 다른 기능을 하는 클래스를 최대한 떨어뜨려놓는 것이 좋다. 이렇게 하면 문제가 발생하더라도 문제가 발생한 부분과 관련 없는 동작에는 영향을 미치지 않거나, 그 영향이 작아질 수 있다. 즉, 객체지향 설계의 이점을 살려서 유지보수를 용이하게 만들어 줘야 한다. 2. OCP(Open Closed Principle..

Computer Science/프로그래밍 이론

[CS] 객체지향 4대 특성(캡슐화, 상속, 다형성, 추상화)

객체지향의 4대 특성 : 캡슐화, 상속, 다형성, 추상화 1. 캡슐화 ( Encapsulation ) 객체의 속성(Variable)을 보호하기 위해 사용한다. 객체와 객체 간의 의사소통을 위해 필요한 정보만을 노출한다. 실제 내부 구현 정보는 숨긴다. [ Method 설계 ] 자신이 가지고있는 속성에 대해서는 해당 상태를 변경하는 기능을 제공해야 한다. 실물 객체가 가진 기능을 모두 제공해야 한다. 각각의 Method는 서로 관련성이 있어야 한다. ( getter - setter ) (add - delete ) 등 Getter / Setter : 외부에서 내부 속성에 직접 접근하지 못하도록 사용 CRUD Method : 데이터 처리를 위한 기본적인 CRUD Method 제공 Business Logic M..

Computer Science/프로그래밍 이론

[Computer Science/디자인 패턴] 전략 패턴(strategy pattern)

전략 패턴(strategy pattern) 전략 패턴은 정책 패턴(policy pattern)이라고도 하며, 객체의 행위를 바꾸고 싶은 경우에 직접 수정하지 않고 "전략"이라고 부르는 "캡슐화된 알고리즘"을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴이다. 비즈니스 로직을 인터페이스로 만들고, 해당 인터페이스를 구현한 클래스를 사용하도록 만드는 것이라고 생각하면 된다. 우선 Java 코드를 이용한 기본 예제로 알아보고, 추가로 Spring에서 어떻게 전략 패턴을 사용하는지 알아보자. Java 기본 예제 예제로 알아보자. interface : Payment public interface Payment { void pay(int amount); } 구현체 1 : KakaoCardPayment..

Computer Science/프로그래밍 이론

[Spring Boot] DispatcherServlet - 스프링부트의 동작 구조

스프링 부트의 동작 구조 스프링 부트의 기본 의존성 중 하나인 spring-boot-starter-web 모듈을 사용하면, 기본적으로 내장 톰캣(Tomcat)을 사용하는 스프링 MVC 구조를 기반으로 동작한다. 클라이언트의 요청이 들어오면 서블릿이 이를 처리해야 하는데, 서블릿은 서블릿 컨테이너에서 관리하고, 톰캣이 서블릿 컨테이너의 역할과 WAS(Web Application Server)의 역할을 담당한다. 서블릿(Servlet)은 클라이언트의 요청을 처리하고, 결과를 반환하는 자바의 웹 프로그래밍 기술이다. 서블릿 컨테이너의 특징 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리한다. 서블릿 객체는 싱글톤 패턴으로 관리된다. 멀티 스레딩을 지원한다. Dispatcher Servlet 이란..

HSRyuuu
'Computer Science' 카테고리의 글 목록