Computer Science

Computer Science/Network

[Network] OSI 7계층이란

OSI 7 Layer에 대해서 공부를 해보자. OSI 7 Layer이란 OSI 7 계층은 네트워크 통신이 일어나는 과정을 7단계로 나눈 국제 표준화 기구(ISO)에서 정의한 네트워크 표준 모델이다. 아래 그림에서 아래부터 1계층(물리 계층) ~ 7계층(응용 계층)으로 구성되어 있다. 이미지 출처 http://wiki.hash.kr/index.php/OSI_7_%EA%B3%84%EC%B8%B5 OSI 7 계층 - 해시넷 OSI 7 계층(OSI 7 Layer) OSI 7 계층(OSI 7 Layer)는 네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 분리하여 각 계층간 상호 작동하는 방식을 정해 놓은 것 이다. 이는 ISO(국제표준화기구)에서 개 wiki.hash.kr OSI 7 Layer의 구조 1계층 ..

Computer Science/OperatingSystem

[OS] 컨텍스트 스위칭이란?(Context Swiching) (CS스터디)

컨텍스트 스위칭이란 무엇인지 정리를 해보자. 컨텍스트 스위칭이 무엇인가에 대해서 알아보기전에 컨테스트가 무엇인지 알고가자. 컨텍스트(Context) 란 운영체제에서 컨텍스트란 어떤 프로그램이 실행중인 일체의 상황을 말한다. 그 일체의 상황은 메모리와 CPU레지스터들에 고스란히 담겨 있는데 메모리에는 프로그램의 코드와 전역 변수 데이터, 힙(동적 할당받아 저장한 데이터), 그리고 호출된 함수들의 매개변수와 지역변수 등이 저장된 스택이 있다. 그리고 CPU의 PC레지스터에는 현재 실행 중인 코드의 메모리 주소가, 데이터 레지스터에는 이전에 실행된 결과 값이나 현재 실행에 사용될 데이터 값들이, 상태 레지스터에는 현재 CPU의 상태 정보가, SP레지스터에는 스택의 톱 주소가 저장되어 있다. 컨텍스트 스위칭이란..

Computer Science/Software Engineering

[Software] 스크럼(Scrum)

스크럼이란 스크럼이란 럭비에서 반칙으로 경기가 중단된 경우 양 팀의 선수들이 럭비공을 가운데 두고 상대팀을 밀치기 위해 서로 대치해 있는 대형을 말한다. 스크럼은 이처럼 팀이 중심이 되어 개발의 효울성을 높인다는 의미가 내포된 용어이다. 스크럼의 팀 구성 스크럼 팀은 제품 책임자, 스크럼 마스터, 개발팀으로 구성된다. 제품 책임자(PO : Product Owner) 이해 관계자들 중 개발될 제품에 대한 이해도가 높고, 요구사항을 책임지고 의사 결정할 사람으로 선정하는데, 주로 개발 의뢰자나 사용자가 담당 이해관계자들의 의견을 종합하여 제품에 대한 요구사항을 작성하는 주체 요구사항이 담긴 백로그를 작성하고 백로그에 대한 우선순위를 지정한다. 팀원들이 백로그에 스토리를 추가할 수 는 있지만 우선순위를 지정할..

Computer Science/DataStructure

[DataStructure] 배열 (Array) 정리 feat. Java

배열 (Array) 이란 데이터를 나열하고, 각 데이터를 인덱스에 대응하도록 구성한 데이터 구조이다. 배열은 반복문 등을 이용하여 계산과 같은 과정을 쉽게 처리할 수 있습니다. 배열은 고정된 갯수의 데이터를 저장하는데 사용되는 자료구조이며, 배열의 길이는 배열이 생성될때 설정이 됩니다. 배열의 각 항목을 요소라고 하며, 각 요소는 숫자 인덱스에 의해 접근을 할 수 있습니다. 다만, 파이썬에서는 리스트 타입이 배열 기능을 제공한다. 배열은 왜 필요할까? 같은 종류의 데이터를 효율적으로 관리하기 위해서 사용 같은 종류의 데이터를 순차적으로 저장 // new 키워드를 사용해서, 배열을 미리 선언하고, 데이터를 넣을 수도 있음 Integer[] data_list = new Integer[10]; data_lis..

Computer Science/Software Engineering

[Software] 소프트웨어 생명 주기(Software Life Cycle)

소프트웨어 공학이란(Software Engineering) 소프트웨어 공학은 소프트웨어의 위기를 극복하기 위한 방은으로 연구된 학문이며 여러가지 방법론과 도구, 관리 기법들을 통하여 소프트웨어의 품질과 생산성을 향상시킬 목적으로 한다. 소프트웨어 공학의 기본 원칙 현대적인 프로그래밍 기술을 계속적으로 적용해야한다. 개발된 소프트웨어의 품질이 유지되도록 지속적으로 검증해야 한다. 소프트웨어 개발 관련 사항 및 결과에 대한 명확한 기록을 유지해야한다. 소프트웨어 공학의 여러가지 형태의 정의 IEEE의 소프트웨어 공학 표준 용어 사전 : 소프트웨어의 개발, 운용, 유지보수, 폐기 처분에 대한 체계적인 접근 방안 Fairly : 지정된 비용과 기간 내에 소프트웨어를 체계적으로 생산하고 유지보수하는 데 관련된 기..

Computer Science/Algorithm

[Algorithm] 0-1 BFS

0-1 BFS란? BFS를 기반으로 가중치가 0,1로 주어진 그래프에서 최단경로를 찾아낼 수 있는 알고리즘이다. 기본적으로 그래프에 대한 이해와 최단경로 다익스트라 알고리즘에 대한 이해가 필요하다. 최단경로 알고리즘에는 다익스트라 알고리즘을 사용할 수 있지만, 시간복잡도가 O(ElogE) 또는 (ElogV)인 반면에 0-1 BFS는 O(V+E)의 시간 복잡도로 문제를 해결할 수 있다. 가중치 0인 정점이 존재하기 때문에, 실제로 정점의 방문 횟수가 더 많더라도 가중치가 더 낮은 경우를 고려해야한다. 그렇기 때문에 결과 값이 방문 횟수의 최소가 아닌 가중치의 최소인 경우를 찾기 위해서는 가중치가 낮은 경로부터 탐색해야한다. 가중치가 낮은 정점으로의 이동을 높은 우선 순위로 해야하기 때문에, 덱의 가장 앞단..

Computer Science/OperatingSystem

[OS] 프로세스와 스레드는 어떤 차이점이 있나요?

이전에 프로세스와 스레드에 대하여 정리를 한 적이 있지만, 공부하기 위해서 다시 정리를 하기로 하였다. 단순 프로세스와 스레드에 대한 설명은 생략하고, 차이점에 대해서만 집중적으로 정리를 해보자면 실행 단위 프로세스는 운영체제로부터 자원을 할당받아 독립적으로 실행되는 프로그램 단위이다. 각각의 프로세스는 독립된 주소 공간, 파일, 메모리등을 가지며, 각각이 별도의 작업을 수행한다. 스레드는 프로세스 내에서 실행되는 작업단위로, 프로세스의 자원을 공유하면서 실행됩니다. 스레드는 동일한 프로세스 내에서 여러 개가 동시에 실행 될 수 있으며, 주소 공간과 자원을 공유하면서 작업을 수행합니다. 자원 공유 각각의 프로세스는 독립된 주소 공간을 가지고 있기 때문에 자원 공유가 어렵다. 프로세스 간에 자원을 공유하기..

Computer Science/Linux

[Linux] Linux(리눅스) 란?

리눅스란? 리눅스(Linux)는 오픈 소스 운영 체제(OS) 중 하나로, 컴퓨터 하드웨어와 소프트웨어 리소스를 관리하고 사용자와 프로그램 간의 인터페이스를 제공합니다. 리눅스는 프로그램 개발, 웹 서버, 데이터베이스 서버 등의 다양한 용도로 사용되며, 안정성, 보안성, 유연성 등의 장점을 가지고 있습니다. 리눅스는 UNIX 운영 체제에서 영향을 받아 개발된 운영 체제입니다. 리눅스는 UNIX와 유사한 명령어와 파일 시스템을 사용하며, 다중 사용자 및 다중 작업 환경을 지원합니다. 또한, 소스 코드 공개 및 수정이 자유롭기 때문에 개발자들에게 인기가 높습니다. 리눅스는 다양한 배포판(Distribution)으로 제공되며, 대표적으로 Ubuntu, CentOS, Debian, Fedora 등이 있습니다. 각..

Tenacity_Dev
'Computer Science' 카테고리의 글 목록 (4 Page)