본문 바로가기
728x90
반응형

개발18

런픽 | EP01. 와이어 프레임 제작 런픽(RUN PICK)은 이번 프로젝트 웹앱의 가제이다. 이 프로젝트를 시작하게 된 계기는 이전 글을 참고하면 될 것 같다. 런픽 | EP0. 올해는 반드시 사이드 프로젝트를 완수하자...!2024.02.14 - [답수실Log] - 240213 | 작년에 사이드 프로젝트를 실패했던 이유. 모든 것은 단계적으로 만드는 것(기획, 구조, 코드 등등) 240213 | 작년에 사이드 프로젝트를 실패했던 이유. 모든 것은 단dapsu-startup.tistory.com 여하튼 이번 프로젝트의 경우 개발뿐만 아니라 기획 단계도 포함되어 있기 때문에 웹서비스를 출시한다는 느낌으로 시작하고 있다. 마치 스타트업을 창업할 때와 비슷한 기분이다. 하지만 분명한 점은 어찌 됐든 이 프로젝트는 개발이 메인이고, 사업화를 진행.. 2024. 5. 4.
런픽 | EP0. 올해는 반드시 사이드 프로젝트를 완수하자...! 2024.02.14 - [답수실Log] - 240213 | 작년에 사이드 프로젝트를 실패했던 이유. 모든 것은 단계적으로 만드는 것(기획, 구조, 코드 등등) 240213 | 작년에 사이드 프로젝트를 실패했던 이유. 모든 것은 단계적으로 만드는 것(기획, 구조,23년 회고 중에 사이드 프로젝트에 대한 얘기를 했었다. 2023.12.31 - [답수실Log] - 답수실Log | 231231 | 23년 회고 답수실Log | 231231 | 23년 회고 이 블로그의 최신 글이 23년 3월 6일이다. 9개월 동안 블로그dapsu-startup.tistory.com 불과 두 달 전만 하더라도 사이드 프로젝트를 단계적으로, 차근차근 진행하자! 라고 했었지만 역시 나새ㄲ... 아니 나님께서는 아직도 프로젝트 진행이 지.. 2024. 4. 29.
운영체제(Operating System) | 메모리(Memory) 스레드까지 하다 갑자기 메모리까지 점프... 어쩔 수 없다. 지금 핀토스 virtual memory를 진행하고 있어서 일단 메모리 관련 OS부터 정리하려고 한다. 메모리 시스템은 여러 가지 용량, 비용, 접근 시간을 가지는 저장 장치들의 계층구조이다. 메모리 계층구조는 아래 사진 참조! CPU 레지스터: 가장 자주 이용하는 데이터 보관(locality) 캐시: SRAM. CPU부근에서 비교적 느린 메인메모리에 저장된 데이터와 인스트럭션들의 부분집합에 대한 준비장소 메인메모리: DRAM. 크고 느린 디스크들에 저장된 데이터를 준비하는 데 사용, 이 디스크들은 네트워크로 연결된 다른 머신들의 디스크에 저장된 데이터를 위한 준비장소 1. RAM(랜덤-접근 메모리) | SRAM (정적 RAM) SRAM, 즉 정.. 2021. 10. 26.
자료구조 | Red-Black Tree 위키백과에 의하면 Red-Black tree(레드-블랙 트리)는 자가 균형 이진 탐색 트리로서, 대표적으로는 연관 배열 등을 구현하는 데 쓰이는 자료구조라고 한다. 레드-블랙 트리는 복잡한 자료구조지만, 실 사용에서 효율적이며 최악의 경우에도 O(logN) 시간복잡도를 보장할 정도로 안정(balanced)되었다. ※ 트리? 그래프? 더보기 트리 구조는 우리 주변 일상에서 쉽게 볼 수 있는 위아래 개념을 컴퓨터에서 표현한 구조다. 더 중요한 트리의 속성 중 하나는 재귀로 정의된 자기 참조 자료구조라는 점! 그렇다면 그래프와 트리의 차이점은 무엇일까? 한 줄로 요약하자면 "트리는 순환 구조를 갖지 않는 그래프"이다. 트리는 특수한 형태의 그래프의 일종이며, 크게 그래프의 범주에 포함된다. 하지만 트리는 그래.. 2021. 10. 13.
pintOS | Project 2 | 명령어 실행 기능 구현(Command Line Parsing) pintos project2 설명 보기 프로젝트1에서 실행했던 alarm clock, scheduling 등 모든 코드들은 전부 커널의 일부였고, 테스트 코드 또한 커널에 직접 컴파일했었다. 이제부터는 유저 프로그램을 실행하여 운영체제를 테스트한다. 그러나 현재 pintos는 커맨드 라인에 명령어를 작성하면, 프로그램 이름과 인자를 구분하지 못 하고 적은 명령어 전체를 하나의 프로그램으로 인식하게 구현되어 있다. 즉 프로그램과 인자를 구분하여 파싱하고 패싱할 수 있도록 하는 것이 이번 목표다. (e.g. ls -l 이라는 명령어를 적었을 때, ls 와 -l을 구분하지 못 하고 'ls -l'을 하나의 프로그램 명으로 인식) pintos에 이미 구현되어 있는 코드를 보면서 먼저 프로그램의 실행이 어떻게 되는.. 2021. 10. 7.
운영체제(Operating System) | 스레드(Thread) 프로세스에 이어 스레드에 대해 정리하도록 하겠다. 1. 스레드(Thread)의 개념 스레드는 프로세서(CPU) 활용의 기본 단위이다. 프로세스의 제어 요소 외의 코드, 데이터 및 자원들은 프로세스의 다른 스레드들과 공유한다. 아래의 그림으로 예를 들어보자. 아래 중앙의 동그라미는 워드 문서를 편집하는 프로세스이다. 한 프로세스 안에 여러 개의 스레드가 존재하는데, 어떤 스레드는 입력과 관련된 제어, 다른 스레드는 문서에 이미지나 텍스트는 보여주는 스레드, 또 다른 하나는 데이터를 저장하는 스레드이다. 만약 스레드가 하나였다면 어떻게 되었을까? 편집기에 "안녕하세요"를 입력하려고 한다. 키보드로 "ㅇ"을 치면 입력에 응답하는 스레드가 일을 할 것이고, 그 때 동안 워드 문서창은 일을 못 한다(스레드가 키보.. 2021. 9. 28.
운영체제(Operating System) | 프로세스 관리 전 장에서 프로세스는 실행 중인 프로그램이라고 했다. 이번 글에서는 프로세스에 대해 더 자세하게 정리하려고 한다. 1. 프로세스 정의 프로세스는 실행 중인 프로그램으로, 커널에 등록되고 커널이 관리하는 작업이다. 프로세스는 각종 자원들을 요청하고 할당 받을 수 있는 개체(entity)이며, 실행 중에도 각종 자원을 요구하고 할당, 반납이 진행된다(active entity). * 자원(Resource)? 커널의 관리 하에 프로세스에게 할당/반납 되는 수동적 개체(passive entity) 하드웨어 자원: CPU, memory, 모니터, 키보드 등 소프트웨어 자원: 메시지, 시그널, 파일 등 * cf) Job vs Process 프로세스 이전에 작업(Job)이라는 개념이 있다. Job은 실행할 프로그램 +.. 2021. 9. 28.
운영체제(Operating System) | 운영체제 개요 어제를 기점으로 악명이 자자한 핀토스를 시작하게 되었다. 정글 1기 분들 핀토스 얘기 나올 때마다 모두 다 하나 같이 PTSD 오시는거 보고 겁나 쫄아 있는 상태임... pintOS, 이제 과제 시작되었는데 솔직히 뭔지 모르겠다. 운영진님들이 올려주신 GitBook을 보면, 핀토스는(pintos-kaist) 심플한 운영체제(x86-54) 프레임워크라고 한다. 커널 스레드, 사용자 프로그램 로드 및 실행, 파일 시스템을 지원하지만 이 모든 것을 매우 간단한 방식으로 구현할 것이라고 한다. (이 양반들의 심플, 간단이라는 단어하고 내가 아는 단어하고 다른 단어인 듯;;) 여하튼 핀토스 과제를 하기 위해서는 전 글에서도 계속 얘기했던 것처럼 기본적인 OS에 대한 지식이 탑재되어 있어야 한다. 전에 malloc.. 2021. 9. 28.
정글에서 살아남기 | WEEK07 | 웹서버 만들기 이번 주 차는 일이 많았다. 추석 연휴도 있었고, 백신 맞아서 두통으로 고생도 했었고(물론 심하지는 않아서 다행쓰) 특히 추석 때 고향에 잠깐 내려갔다가 다시 대전으로 복귀할 때 버스를 놓쳐서 다음 시간 버스를 탔었고(진짜 운좋게 한 자리 남았었음..) 차 거어어업나게 막혀서 버스에서만 다섯 시간 있었고, 캠퍼스까지 복귀하는데 6시간 30분이나 걸렸었다.. 이것만으로도 체력 고갈... 여하튼 이번 주는 웹서버 만들기가 목표였고, 역시 C언어로 Tiny 웹 서버를 구현했었다. flask 프레임워크를 이용하여 웹 서버를 만드는 것과는 다르게 더 low하게 코드 구현을 해야 되어서 꽤 어려웠던 부분들이 많았다. 1. 웹서버 만들기 1. 네트워크 프로그래밍(Network Programming) | 클라이언트, .. 2021. 9. 28.
728x90
반응형