전체 글
-
[운영체제] 스핀락(Spinlock)은 무엇인가?ComputerScience/운영체제 2020. 6. 14. 00:42
2020/06/14 - [운영체제] - [운영체제] 뮤텍스(Mutex), 세마포어(Semaphore) 그리고 모니터(Monitor) 뮤텍스와 비교되는 스핀락 빙글빙글 돈다는 의미에서 스핀락이다. 스핀락 특정한 자료구조를 lock 또는 unlock 함으로써 공유 데이터에 대한 접근 권한을 관리하는 방법이다. 권한을 획득하기 전까지는 CPU는 무의미한 코드를 수행하는 busy waiting 상태로 대기하고 있다가 접근 권한을 얻는다면 내부 코드를 수행하고 종료 후 권한을 해제한다. 상태가 획득/해제 밖에 없기 때문에 공유 영역에는 하나의 컴퍼넌트만 접근할 수 있으며 획득과 해제의 주체는 동일해야 한다. 즉, Lock를 얻을 수 없다면 계속해서 for문을 돌면서 Lock을 얻을 수 있는 지 확인한다. Lock..
-
[운영체제] 뮤텍스(Mutex), 세마포어(Semaphore) 그리고 모니터(Monitor)ComputerScience/운영체제 2020. 6. 14. 00:10
이 셋은 모두 운영체제의 동기화 기법이다. 일단 뮤텍스와 세마포어부터 살펴보자. 운영체제에선 공유된 자원에 대해 여러 프로세스, 쓰레드가 접근하여 문제가 발생하는 것을 방지하고자 운영체제 동기화 기법을 만들었다. 1. 뮤텍스(Mutex, 상호배제) aka Mutual exclusion 공유된 자원의 데이터를 여러 쓰레드가 접근하는 것을 막는 것이다. 임계영역(Critical Section)을 가진 스레드들의 Running time이 서로 겹치지 않게 단독적으로 실행되게 하는 것. 다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 Locking과 Unlocking을 사용. 한 쓰레드가 임계영역에 들어가기 위해선 lock을 하고 나올 땐, unlock를 해준다. bool unlocked; void ..
-
[운영체제]데드락을 회피할 수 있는 자원할당 그래프, 은행원 알고리즘ComputerScience/운영체제 2020. 6. 13. 17:28
자원할당 그래프 알고리즘(Resource-Allocation Graph Algorithm) 자원이 하나일 때 사용하는 알고리즘. 자원 할당 그래프에 요청 간선과 할당 간선에 추가하여, 예약간선이라는 새로운 유형의 간선을 도입한다. - 요청선 : 프로세스에서 자원으로 연결 된 섬 (나 저 자원 쓰고 싶다~라고 요청한다고 보면 됨) - 할당선 : 자원에서 프로세스로 연결 된 섬 (이 자원은 이 프로세서가 쓰고 있음을 나타냄) 교착상태 확인 방법 1. 자원할당 그래프의 사이클이 존재하는 지 확인 2. 사이클이 존재한다면 - 자원 유형에 하나의 사례만 있으면 교착상태 - 자원 유형에 여러 사례가 있으면 교착상태 가능성 교착상태가 있는 자원할당 그래프 예시 사이클은 있지만 교착상태가 아닌 예 프로세스 p1이 작업..
-
[운영체제] 데드락(Dead lock), 교착상태가 뭐지? + 해결방법ComputerScience/운영체제 2020. 6. 13. 17:27
데드락(Dead lock)이란? '교착 상태'라고 하며 한정된 자원을 여러 곳에서 사용하려고 할 때 발생할 수 있다. (DB의 트랜잭션들이 하나의 Table에 대해 연산을 시도할 때도 발생할 수 있다) 데드락 발생 요건 네 가지 조건을 모두 충족할 때 발생한다. 1. 상호배제(Mutal exclusion) 프로세스들이 필요로 하는 자원에 대해 배타적인 통제권을 요구한다. 2. 점유와 대기(Hold and Wait) 자원을 가지고 있는 상태에서 다른 프로세스가 사용하고 있는 자원의 반납을 기다리는 것. 3. 비선점(Non Preemptive) 다른 프로세스의 자원을 강제로 가져올 수 없음. 4. 환형대기(Circle wait) 각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 갖고 있는 것 데드락 ..
-
[Database] 트랜잭션은 무엇인가?ComputerScience/DB,Cloud 2020. 6. 13. 16:38
트랜잭션 트랙잭션이란 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 하는 일련의 연산을 의미한다. 트랜잭션의 특징 1. 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위. 2. 사용자가 시스템에 대한 서비스 요구 시, 시스템이 응답하기 위한 상태 변환 과정의 작업단위. 3. 하나의 트랜잭션은 Commit되거나 Rollback된다. 트랜잭션의 성질 (ACID) Atomicity(원자성) 1. 트랜잭션의 연산은 DB에 모두 반영 or 전혀 반영 안되어야 한다. 2. 트랜잭션 내의 모든 명령은 반드시 완벽수행, 모두가 완벽 수행되지 않는다면 트랜잭션 전부가 취소 Consistency(일관성) 1. 트랜잭션..
-
[Cloud] IaaS, PaaS, SaaSComputerScience/DB,Cloud 2020. 6. 13. 12:39
클라우드 컴퓨팅은 서버, 스토리지, 네트워크, SW등 자원이 필요할 때, 인터넷을 통해 서비스 형태로 대여받아 이용하는 방식이다. 클라우드 서비스 유형에는 IaaS, PaaS, SaaS가 있다. IaaS : Infrastructure as a Service PaaS : Platform as a Service SaaS : Software as a Service 다시 말해 이 세개의 분류에 따라 클라우드 서비스가 제공하는 서비스의 범위가 결정된다. IaaS는 네트워킹, 저장소, 서버 등 의 컴퓨터 자원을 제공해준다. 내가 썼던 EC2.. PaaS는 그에 더해 OS, Middleware, Runtime등의 개발환경까지 제공해준다. RDS? SaaS는 소프트웨어까지 모두 다 제공해주며 End유저는 사용만 하면 ..
-
Private 클라우드, Public 클라우드 그리고 Hybrid 클라우드ComputerScience/DB,Cloud 2020. 6. 12. 23:52
1. 사설 클라우드 (Private Cloud) 기업들이 자체적으로 데이터센터 안에 클라우드 환경을 자체 구축해 사용하는 방식을 의미합니다. 회사 내 IT 리소스를 이용하려는 사용자가 자유롭게 어플리케이션을 개발, 운용할 수 있는 환경을 제공하는 것을 목표로 합니다. - 기존 IT 인프라를 대부분 재활용 가능 - IT 서비스를 원하는 형태로 사용자의 구미에 맞게 직접 구성해 제공 가능 - 내부 통제 가능, 보안성 자체 확보 가능 - IT 서비스 내부 효율성 향상 2. 공용 클라우드 (Public Cloud) 공용 클라우드는 서비스 제공업체(벤더)가 구축한 서버, 스토리지 등의 IT 인프라를 기업들이 사용료를 내고 이용하는 방식을 의미.(AWS, Google Cloud 등) - 클라우드 서비스 제공자가 클..
-
하둡(Hadoop)에 관하여ComputerScience/DB,Cloud 2020. 6. 12. 22:49
하둡에 대해 알아보자. 데이터가 쌓여가는 빅데이터의 시대에 RDBMS에 데이터를 저장하는 시도는 불가능하다. 이에 새로 나온 데이터 저장 기술이 하둡인데 이에 대해 알아봅시다. 1. 하둡(Hadoop)이란? 하둡은 대용량 데이터를 분산 처리할 수 있는 자바 기반의 오픈 소스 프레임 워크. 구글이 논문으로 발표한 GFS를MapReduce를 구현한 결과물이다 . HDFS(Hadoop Distributed File System)에 데이터를 저장하고, 맵리듀스를 이용해 데이터를 처리한다. 여러 대의 서버에 데이터를 저장하고, 저장된 각 서버에서 동시에 데이터를 처리하는 방식. 기존의 RDBMS를 대치하는 것이 아니다. 1.1 특징 1) HDFS는 데이터를 저장하면, 다수의 노드에 복제 데이터도 함께 저장해서 데..
-
[컴퓨터통신] TCP, UDP, 3-way 4-way handshakingComputerScience/통신 2020. 6. 12. 21:26
TCP/UDP TCP : Transmission Control Protocol ,전송 제어 프로토콜 전송계층에 있음. IP와 엮여서 TCP/IP라고 보통 부름 reliability 보장, Flow Ctrl, Congestion Ctrl. 3-way handshaking을 통해 연결, 4-way handshaking을 통해 해제 stateful : 세션 상태정보를 기록해두고 그에 따라 응답이 달라지게 한다. UDP : 비연결지향, 최소한의 Checksum을 통해 오류제어 기능(컨트롤은 아님) 실시간 멀티미디어 정보를 처리하기 위해 사용, reliability 보장안함 속도는 빠르다. datagram 방식을 이용한다. DNS(도메인 네임 서비스), TFTP, IPTV, VoIP, IP터널, 게임 등이 이용 ..
-
[컴퓨터통신] Stateless, Stateful, best effortComputerScience/통신 2020. 6. 10. 17:03
stateless protocol IP는 statelss protocol을 이용한다. 그렇다면 stateless란 대체 무엇일까? 컴퓨팅에서 무상태 프로토콜(stateless protocol)은 어떠한 이전 요청과도 무관한 각각의 요청을 독립적인 트랜잭션으로 취급하는 통신 프로토콜로, 통신이 독립적인 쌍의 요청과 응답을 이룰 수 있게 하는 방식이다. 무상태 프로토콜은 서버가 복수의 요청 시간대에 각각의 통신 파트너에 대한 세션 정보나 상태 보관을 요구하지 않는다. 반면, 서버의 내부 상태 유지를 요구하는 프로토콜은 상태 프로토콜(stateful protocol)로 부른다. 무상태 프로토콜의 예에는 인터넷의 기반이 되는 인터넷 프로토콜(IP)과 월드 와이드 웹의 데이터 통신의 토대가 되는 HTTP가 있다...
-
[컴퓨터통신] Protocol "layers"ComputerScience/통신 2020. 6. 10. 16:49
네트워크는 복잡하다. 그래서 많은 부분으로 나누어 진다. 계층적으로 나뉘어져 있고 계층마다 각자의 역할이 있다. 비유로 비행기 티켓을 구매하는것을 생각해보자. ->우리는 비행기를 타기 위해 비행기 티켓을 산다. -> 수하물을 체크인한다 -> 티켓을 제출하고 게이트에 탄다 -> 비행기가 이륙 -> 목적지(routing)을 향해 간다. 그리고 그 반대 과정으로 목적지에 도착한다면, -> 목적지를 향해 간다. -> 비행기가 착륙 -> 게이트에서 공항으로 내림 -> 수하물을 되찾음 -> ticket complain(?) 비행기를 타는 과정에 각각의 계층적 층에서 행위들이 이루어진다. 통신도 마찬가지다. 각각의 계층에서 각각의 임무를 수행하고 상하의 계층으로 처리된 결과를 전달해준다. modularization ..
-
[컴퓨터통신] delay, loss, throughput in networksComputerScience/통신 2020. 6. 10. 16:10
이전 글에서 패킷 스위칭 방식으로 데이터를 전달할 때, Queue에서 Loss가 발생할 수 있음을 언급했다. 이에 대해 Loss에 대해 알아보고 Packet 방식에서 발생하는 네 가지 delay를 알아보자. How Do loss and delay occur? router에서 Queue 방식을 통해 packet을 받는다. 버퍼라고도 한다. 여기서 큐에 나가는 속도보다 큐에 들어오는 속도가 더 커지면 Queue는 꽉 차게 되고 이럴 때, 더이상 packet을 받을수 없기에 loss가 발생한다. (dropped if no free buffers) 여기서 queing delay가 발생한다. 잃어버린 패킷은 이전 노드나 출발지 종단에서 재전송 될 수 있음 Four sources of packet delay nod..
-
[컴퓨터통신] network edge, network coreComputerScience/통신 2020. 6. 10. 15:35
network edge network edge hosts : clients and servers servers often in data centers. access networks, physical media wired, wireless commnuication links network core interconnected routers network of networks client / server model peer to peer model (서버이자 클라이언트) cable network FDM(Frequecy Division Multiflexing), 주파수 분할 다중화 한 전송로의 대역폭을 여러 개의 작은 채널로 분할하여 여러 Data를 동시에 보내는 방식 미국의 경우는 HFC (hybrid fib..
-
[컴퓨터통신] 인터넷, 프로토콜이란 무엇인가?ComputerScience/통신 2020. 6. 10. 14:55
[컴퓨터통신] 인터넷, 프로토콜이란 무엇인가? What's the Internet : "nuts and bolts" view 수 많은 연결된 computing divices end host = end system 작동하고 있는 network apps communication links fiber, copper, radio, satellite(wireless link) transmission rate : bandwidth(Hz) 와 daterate(bps)는 비례한다. packet switches : forward packets 라우터 and switches 패킷이 오면 패킷헤더에 목적지 IP주소를 보고 갈 곳을 정해줌 (using routing protocol) ISP : Internet Service ..
-
[운영체제/OS] 스레드(Thread), 그리고 프로세스와의 차이ComputerScience/운영체제 2020. 6. 4. 10:02
쓰레드(Thread)란 무엇인가 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다. 출처 : wikipedia.org 예전 글에서 알아 본 실행중인 프로그램을 뜻하는 프로세스에서의 내부에서 실행되는 흐름의 단위입니다. 하나의 프로세스에는 최소 하나 이상의 스레드가 존재합니다. 다수의 프로세스가 순차적으로 실행되는 멀티프로그래밍은 각자의 프로세스가 독립적이기 때문에 자신만의 Code, Data, Heap, Stack를 갖고 있습니다. 하지만 스레드는 하나의 프로세스 에서 ..
-
[hash/map]Programmers 완주하지 못한 선수ComputerScience/코딩테스트 2020. 6. 4. 02:38
문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수�� programmers.co.kr 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution ..