본문 바로가기

공부46

내가 보려고 정리한 git 명령어 git 공부하면서 느낀 점 : 그동안 이거 모르고 어떻게 개발했는지 모르겠다. CLI(Command Line Interface) 로는 모든 git 기능을 사용할 수 있고, github 나 IDE 에서 제공하는 기능에는 한계가 있다. 그리고 GUI 기능도 CLI 를 사용할 줄 알아야 더 잘 사용할 수 있다. 초기 설정 : 깃 저장소를 만들거나(init) 가져온다.(clone) 초기에는 commit 시 기록될 기여자(contributor)의 정보도 입력한다. git config --global user.name= git config --global user.email= git init git clone \[dir name\] git config --global alias. # 단축 명령어 git config.. 2021. 5. 8.
[운영체제] 스와핑 (swapping) 스와핑 메모리를 모두 사용했을 때 새로운 프로세스를 실행할 수 있을까? 스와핑을 이용하면 실행할 수 있다. 스와핑은 메모리에 있는 데이터를 디스크에 있는 데이터와 바꾸는 작업이다. 스왑 스페이스 : 하드디스크를 이용하는 것 얘기 초반에 피지컬 메모리만 있을 때 문제점 : 메모리 크기가 충분하지 않으면 모든 프로그램을 적재할 수 없다. 아이디어 페이징 시스템을 사용하고 있을 때 사용하지 않는 프레임이 있다면 그 부분을 디스크에 저장하고 디스크에 있는 페이지를 메모리로 올린다. 프로세스가 메모리 접근 -> (if 메모리에 없다) 스와핑이 일어난다. -> 디스크에서 가져온다. -> 메모리에 다시 엑세스 운영체제에서 어떤 페이지를 가져오라는 명령을 줄 수 있어야 한다. 스와핑은 cpu가 자동으로 할 순 없고 운.. 2021. 5. 4.
[운영체제] 가상 메모리 2 (paging) 페이징을 시작하기 앞서, 프로젝트2 하기 전에 정리한 내용(Segmentation)들... 일단 교수님이 IA-32 인텔 아키텍쳐 매뉴얼을 보면 도움이 된다고 하셨는데,... pdos.csail.mit.edu/6.828/2005/readings/ia32/IA32-3.pdf 그 내용이 여기에 있다. 영어로 800페이지 있는 거 보고 깔끔하게 무시했다. 프로젝트2 요구사항은 geekOS 에서 segmentation 을 이용하여 userseg.c 파일을 완성하는 것이다. userseg.c 의 Create_User_Context(), Load_User_Program() 함수를 완성하면 되었다. C언어가 이렇게까지 어려워질 수 있구나라는 걸 프로젝트2 하면서 느꼈다. LDT : Local Descriptor Ta.. 2021. 5. 2.
운영체제 중간고사 후기 1. 문제 대부분의 과목에나 해당되는 말이지만, 대학교 문제가 가장 컴플레인 할 부분이 많은 것 같다. 중의적인 표현, 인과 관계가 역전된 문제, 강의 내용과 다른 정답 등... 사실 강의 내용과 다른 건 정정 요청하면 되는 부분이지만 중의적인 표현은 조금 더 신경써 주셨으면 좋겠다. 복학 후 첫 시험이라 방심했다. 틀린 문제 중 두 문제는 정답을 보고도 왜 틀렸는지 모르겠다. 2. 온라인 시험 계산 문제가 많았다. 하지만 시간도 많이 남았다. 무감독 오픈북 시험이었지만 검색할 만큼 어려운 문제는 없었다. 중의적인 표현이 있더라도 교수님 의도를 파악하고 수정할 시간이 있었다. 계산을 검토할 시간도 있었다. 하지만 온라인 특성상 부정행위 적발이 힘들기 때문에 문제 뒤로가기가 막혀 있었고 한 문제씩 풀 수 .. 2021. 4. 21.
[운영체제] 가상 메모리 1 (virtual memory) physical memory 프로세스에서 피지컬 메모리를 사용할 경우 문제점 process protection isolation 피지컬 메모리를 사용하면 악성 프로세스를 막을 수 있는 방법이 없다. 커널도 같은 공간을 사용하기 때문에 over write 될 수 있다. 이는 매우 심각한 문제이다. 또한 프로세스는 고정된 포인터를 사용하기 때문에, 프로세스가 여러 개가 된다면 문제가 생길 수 있다. 2번 프로세스에서 1번 프로세스의 코드에 접근할 가능성이 있다. 해결 방법 고정된 메모리 주소 프로그램을 로드할 때 주소를 수정 PC(EIP) 와 비교한 상대 주소 사용 하드웨어 지원을 이용 (가상 메모리) 고정된 메모리 주소 위에서 살펴본 상황과 같다. 프로세스가 하나일 경우에는 별다른 문제가 없을 것이라 예상.. 2021. 4. 20.
[운영체제] 프로세스 스케줄링 2 (process scheduling) 이전 글에서 공부했던 것은 클래식한 스케줄링 방법이고, 이번 글에서는 조금 더 복잡한 스케줄러에 대해 공부한다. Priority Scheduling 우선순위 스케줄링, 사실 SJF, STCF 스케줄러도 우선순위 스케줄러이다. 앞서 공부했던 이 스케줄러들의 문제점은 무엇일까? startvation 굶주림 문제가 있다. 계속해서 높은 우선순위의 프로세스가 들어온다면 우선순위가 낮은 프로세스는 오랫동안 실행되지 않는다. 이러한 문제를 해결해 보자! EDF Eariest Deadline First 데드라인이 빠른 프로세스를 먼저 실행하는 것이다. 당연한 얘기지만 preemtive 한 스케줄러이다. 이 스케줄러가 유명한 이유는 데드라인에 대해서 최적이기 때문이다. 이 스케줄러로 데드라인을 맞출 수 없다면 어떤 스.. 2021. 4. 20.
[운영체제] 프로세스 스케줄링 1 (process scheduling) 운영체제의 스케줄러는 어떤 프로세스를 실행할 것인가를 결정해야 한다. 학부 수준에서는 CPU 를 하나만 사용하는 유니 프로세스 스케줄링만 다룬다. 스케줄러를 결정할 때 다음을 고려해야 한다. 프로세스 특성 CPU bound : CPU 중심 작업 I/O bound : I/O 중심 작업 제약 조건 : 데드라인 운영체제의 특성 preemption 을 허용하는가? 사용자 특성 interactvie 한가? 엄밀하게 나누면 스케줄러와 디스패처가 있다. scheduler : 어떤 프로세스를 실행시킬 지 결정한다. dispatcher : 현재 프로세스와 선택된 프로세스를 컨텍스트 스위칭 해 준다. 스케줄링은 어느 시점에서 해야하는가? 현재 프로세스가 종료되었을 때 현재 프로세스가 waiting queue 로 빠졌을 때.. 2021. 4. 19.
[운영체제] 프로그램 로딩(program loading) 프로그램을 메모리에 적재하는 것도 OS의 역할 중 하나이다. 프로그램을 실행하기 위해서는 적절한 포맷을 가지고 있어야 한다. 여기서 살펴볼 것은 elf 포맷이다. elf 포멧은 3가지로 나눌 수 있다. elf header program header table section header table elf : 엔트리 포인트, ... progrma header : segment list, ... section : 영역 (.text, .data, ...) elf header 에는... e_ident : 매직넘버, 첫 4바이트는 7f 'ELF' 가 들어있다. 7f 는 바이너리이다. e_endtry : 엔트리 포인트 phoff : 프로그램 헤더 위치 shoff : 세그먼트 헤더 위치 (phoff 랑 .. 2021. 4. 19.
[운영체제] 운영체제 만들기 32비트 인텔 CPU를 가정한다. bios 는 다루지 않는다. 키보드, 디스크, 화면을 다룬다. general purpose registers EAX, EBX, ECX, EDX stack registers ESP, EBP EBP 는 base pointer 인데, 현대의 컴파일러들은 EBP 를 거의 사용하지 않는다. other registers EIP, EFLAGS(bit vector of flags, stroes things like carry, ...) 메모리의 값을 바로 메모리에 넣을 수는 없고 반드시 레지스터를 거쳐야 한다. 운영체제에 따라 RAX, EAX, AX 로 나눌 수 있고 이전 버전과 호환되어야 한다. AX 는 AH + AL 로 나눌 수 있다. jmp : 무조건 점프 jz : zero 면 .. 2021. 4. 19.