전체 글
-
운영체제 4: 프로세스 (Process)의 구조CS기초/OS,HW 2021. 12. 28. 00:31
프로세스의 구조 text: 컴파일 된 코드 저장 data: 전역 변수 또는 초기화된 데이터 저장 bss: 초기값이 없는 변수 저장 stack: 함수 호출로 생성된 데이터, 로컬 변수 등 임시 데이터 저장 heap: 코드에서 동적으로 만들어지는 데이터 저장 Stack & Heap stack과 heap은 자료구조이다. Heap은 동적으로 메모리를 할당하는데, 사실 파이썬은 알아서 메모리를 관리하기 때문에 파이썬 이용자들에게는 어떤 의미인지 잘 안 와닿을 수 있다. C언어의 경우 사용자가 메모리를 직접 관리하는데, C에서 사용하는 malloc, free 함수가 동적 메모리 할당 및 해제에 관련된 함수다. 예를들어, C에서 다음과 같은 코드를 사용했을 때 int main() { int *data; data = ..
-
운영체제 3: 인터럽트 (Interrupt)CS기초/OS,HW 2021. 12. 28. 00:25
인터럽트란? CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외상황 처리가 필요할 경우에 CPU에 알려서 처리하는 기술. 쉽게 말해서 CPU가 다른 장치와 커뮤니케이션을 할 수 있도록 하는 기술이다. 예를 들어 파일을 읽는 작업을 위해 blocking 상태로 빠진 프로세스가 있었다면, 파일을 다 읽었다는 메세지를 CPU에 전달함으로써 해당 프로세가 ready 상태로 전환되었음을 알리는 것이다. 또는 선점형 스케줄러에서 프로세스를 running상태에서 ready상태로 바꾸기 위해서도 이 기술이 이용된다. CPU가 프로그램을 실행하는 도중 입출력 하드웨어 등 CPU외의 장치에서 예외(e.g. 0으로 3을 나눠라), 이슈 발생 또는 파일 처리가 끝남 → 해당 장치에서 운영체제에 이슈를 알..
-
운영체제 2: 프로세스 스케줄링 시스템의 종류와 알고리즘CS기초/OS,HW 2021. 12. 28. 00:20
스케줄링 시스템 운영체제는 CPU를 효율적으로 사용하기 위해 프로세스 스케줄링을 수행하며, 스케줄링 시스템은 여러가지가 있는데 배치(batch) 처리 시스템, 시분할 시스템, 멀티 태스킹, 멀티 프로세싱, 멀티 프로그래밍으로 나눌 수 있다. 사실 실제로는 시분할 시스템, 멀티 프로그래밍, 멀티 태스킹은 유사한 의미로 통용된다. 중요한 점은 이 세 가지 시스템 모두 CPU 활용도를 높여서 여러 프로그램이 짧은 시간안에 처리될 수 있도록 하기 위해 사용한다는 것이다. 배치 처리 시스템 자료 구조 중 큐(Queue)와 같은 방법으로(선입선출 = FIFO) 첫 번째 응용 프로그램의 작업이 끝나면 바로 이어서 다음 응용 프로그램이 자동으로 실행 될 수 있도록 하는 방법이다. 배치 처리 시스템은 여러 한계가 있고,..
-
운영체제 1: 컴퓨터의 구조와 운영체제의 역할과 구조CS기초/OS,HW 2021. 12. 8. 20:51
컴퓨터의 구조 폰 노이만 구조 컴퓨터 아키텍처로 1940년대 이후 지금까지 만들어진 거의 모든 컴퓨터가 이를 기반으로 한다. 폰 노이만 구조는 중앙처리장치(CPU), 메모리, 프로그램 세 가지 요소로 구성되어있다. CPU와 메모리는 서로 분리되어 있으며 둘을 연결하는 Bus를 통해 명령어 읽기, 데이터 읽기 및 쓰기를 처리한다. 이 전의 컴퓨터는(애니악 - ENIAC)은 새 입력을 넣을 때마다 손으로 직접 진공관 회로 스위치를 다시 조정해야하는 방식이었기 때문에, 폰 노이만 구조는 내장 방식 컴퓨터라는 점에서 의의가 있다. 예를 들면, 이전 컴퓨터는 1+1, 3-2 라는 두 가지의 명령을 수행하려면 하드웨어의 전선을 직접 1, 더하기, 1, 3, 빼기, 2를 의미하는 것으로 매번 바꿔 끼워 입력해야 했지..
-
컴퓨터 과학이 여는 세계를 통해 생각해 본 추상화Data Engineering/Books 2021. 11. 7. 20:13
컴퓨터 과학이 여는 세계 - 이광근 저 처음 공부할 때는 툴의 사용에 집중했다. 입문 수준으로는 충분했으나 예상치 못한 에러를 만나는 등 응용이 필요한 상황이 생기거나 자꾸만 에러에 부딪히면서, 또는 내가 툴을 골라야 할 경우가 계속 발생하면서 조금 더 깊이있는 공부가 필요하겠다는 생각이 들었다. 하드웨어가 먼저 발명이 되었고 소프트웨어는 하드웨어의 동작 방식에 기반하여 발명된다. 소프트웨어의 확장에 따라 요구사항에 맞게 하드웨어는 발전한다. 결국 소프트웨어와 하드웨어는 서로 호환적인 관계이기때문에 컴퓨터의 시작부터 흐름을 알아야겠다고 생각했으나, 어디서부터 어떤 자료를 참고하여 공부해야할 지 막막했는데 함께 일하는 분께서 이 책을 추천해줬다. 컴퓨터의 시작은 1936년 엘런 튜링이 쓴 논문에 있다. 해..
-
포트포워딩으로도 외부에서 접속이 안 될 때: Ngrok으로 로컬PC 서버에 띄우기Tips 2021. 10. 27. 21:39
앞서 포스팅한 포트포워딩으로도 webhook에서 로컬 jenkins에 연결하는 것에 실패했다. 원인은 자세히 알아봐야하지만 아마 집에서 사용하는 개인 공유기가 바로 인터넷에 연결되어있는 것이 아니라 건물에서 사용하는 공유기에 연결되어 있는 것 때문이 아닌가(포트포워딩이 두 번 필요한 상황이지만 건물 공유기에 내가 접속할 수 없으므로 불가)로 추측된다. 로컬 Jenkins에 연결하는 것을 포기하고 EC2에 띄운 젠킨스를 사용하려다가 Ngrok을 사용하면 외부에서 접근 가능한 dns를 만들 수 있다고 하여 시도해봤다. 이전 포스팅에서 적었듯 외부에서 내 컴퓨터에 접근하기 위해서는 포트포워딩을 하거나 공인 IP를 돈을 주고 사야하는데, Ngrok을 사용하면 공인 IP를 만들어 주는 느낌으로 외부에서 로컬 컴퓨..
-
IP주소와 포트포워딩이란, 포트포워딩 설정하기(iptime)CS기초/Network 2021. 10. 26. 23:26
로컬 젠킨스와 Github webhook 연결을 하려다보니 IP주소가 필요했다. IP주소란 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호(ref. Wiki)라고 되어있는데 쉽게 말하면 통신을 위한 장치의 주소같은 개념이다. 우리가 편지를 보내기 위해서는 수신자의 주소를 적어야하는 것 처럼 Webhook이 내 컴퓨터의 젠킨스로 정보를 보내기 위해서는 내 컴퓨터가 어디에 있는지 알아야하니 컴퓨터의 ip주소가 필요한 것이다. 인터넷에서 특정 사이트로 접속할 때 - 이 동작도 접속해달라는 post요청을 보내게 되는데 - http://www.google.com 과 같은 주소를 입력하는데 이것도 사실 이 주소기 DNS 서버라는 것을 통해 IP주소로 바뀌어서 전달된다. 즉, h..
-
[논문리뷰보다는 해석에 가까운] GPT-1 : Improving Language Understanding by Generative Pre-TrainingDeep Learning 2021. 8. 22. 21:14
2018 https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf 해당 논문은 OpenAI에서 발표한 NLP모델인 GPT 시리즈 중 첫 번째 모델인 GPT-1에 대한 논문이다. 본 포스팅은 논문 내용 뿐 아니라 이해에 도움이 되는 추가적인 설명도 포함하고 있다. Introduction 딥러닝 모델은 대부분 지도학습을하기 때문에 레이블링이 필요하지만, 구할 수 있는 대부분의 데이터는 레이블링이 되어있지 않다는 한계가 있다. 그래서 본 논문에서는 레이블링이 되어있지 않은 데이터로 모델을 학습시켜 레이블링 데이터를 이용했을 때의 단점을 극복하고 사람이 알지 못하는 데이터의 특성까지 모델이 학습하게 하고, 이 후 작은 수정만으로 효과적인 t..