전체 글
-
프로세스 생성OS 운영체제/Linux 2020. 3. 23. 15:37
이제 프로세스는 프로그램이 Load 과정을 통해 OS에게 프로세스 자신만의 메모리 자원을 할당 (4GB) 받아 해당 해당 자원에 프로그램이 가지고 있는 내용 (코드, 데이터)을 각 자원의 영역 즉 세그먼트에 알맞게 적재한 상태라는 것을 알 수 있다. 또한 해당 프로세스의 구조는 Text, Data, Heep, Stack 과 같은 세그먼트로 나뉘어 진것을 알 수 있다. 이번 포스트에서는 위에서 설명한 프로세스를 생성하는 방법에 대해서 다룰 것이다. + 개념 : pid_t 구조체 프로세스 고유의 ID 값을 담기위한 전용 구조체이다. pid_t pid ; 와 같이 선언할 경우 stack 메모리에 pid 라는 주소를 가진 메모리의 값을 프로세스 ID 값으로 해석 프로세스 생성 프로세스를 생성하는 방법은 커널에게..
-
프로세스란 ?OS 운영체제/Linux 2020. 3. 23. 13:28
프로세스 란 ? 프로세스는 동작중인 프로그램으로 정의하고 있으며 이때 프로그램이라는 것은 컴파일 된 바이너리 파일이 링크 되어 있는 실행 파일 ( 컴파일 과정을 거친 바이너리 명령어 And 수행에 필요한 자료들의 집합으로 구성 ) 을 의미하며 이렇게 생성된 실행 파일이 Disk 내부에 위치한 상태를 말한다. 이때 Disk 에 위치한 프로그램을 실행하게 되면 Load 과정을 통해 메모리에 적재되는데 바로 이 상태를 프로세스라고 한다. 즉 프로세스는 동작중인 프로그램이며, 커널로부터 할당받은 자신만의 자원( OS 는 32 bit CPU 기준 프로세스에게 4GB 메모리를 할당 )을 가지고, CPU가 기계어 명령들을 실행함에 따라 끊임없이 변화하는 동적인 존재이다. 프로세스의 구조 위에서 프로세스가 어떤것인지 ..
-
리눅스 옛날 버전에 4.7 이상 커널 컴파일 시 에러OS 운영체제/삽질 2020. 3. 22. 20:17
이전에 포스팅 했던 내용으로 오류가 해결되지 않았다.. /scripts/init-top/udev: line 14: can't create /sys/kernel/uevent-helper: Permission denied. Gave up waiting for root device. Common problems: - Boot args (cat /proc/cmdline) - Check root delay= (did the system wait long enough?) - Check root= (did the system wait for the right device?) - Missing modules (cat /proc/modules, ls /dev) ALERT! /dev/disk/by-uuid/6f... do..
-
리눅스 커널 컴파일 중 ( 비지 모드로 빠질경우 )OS 운영체제/삽질 2020. 3. 22. 19:24
최신 커널을 사용하기 위해 새로운 커널 소스를 받고 성공적으로 컴파일 한 뒤 install 까지 마친 후 Reboot 과정에서 오류가 생겼다. 부트로더 (GRUB) 에게 최신 버전 커널 (5.5.11) 을 선택한 뒤 부팅할 시 다음과 같이 비지모드로 빠져버린 것이다. + 부트로더란 ? 부트로더는 리눅스라는 운영체제가 부팅되기 까지 부팅의 전과정을 진행해 주는 부팅전문 프로그램이라고 생각하면 된다. 이때 형재 리눅스라는 운영체제에서 대부분 사용하는 부트로더 프로그램이 GRUB인 것이다. 따라서 해당 부트로더에게 " 어떤 커널로 실행시켜줘 ~ " 라고 말해준다면 해당 커널이 메모리로 적제되어 상주하게 된다. 이는 컴파일 후 설치과정에서 한가지를 빠뜨렸기 때문이다. 커널 크기 문제때문에 initrd 라는 것을..
-
메모리 구조C언어 2020. 3. 16. 15:19
저번 포스트에서 사용자가 작성한 C 프로그램이 어떤 과정을 통해서 실행파일이 되는지 다루었다. 또한 이렇게 만들어진 실행파일은 실행 될 때 Load 과정을 통해 메모리 영역에 담긴다고 하였다. 이번 포스트에서는 이렇게 생성된 실행파일이 어떻게 메모리에 들어가게 되는지에 대해 다룰것이다. 그전에 C언어로 작성한 파일을 실행 파일로 바꾸는 과정을 잠깐 살펴보자 1. C 언어 프로그램 작성 2. 선처리 과정을 통한 프로그램의 실질적 동작을 나타내는 코드와, 추가적인 정보를 나타내는 부분을 분류 3. 컴파일 과정을 통해 해당 코드가 바이너리 형태로 생성 즉 바이너리 파일이 생성 4. 링크 과정을 통해 해당 바이너리 파일과 외부에서 가져온 기능이 있는 바이너리 파일을 합쳐서 실행파일 생성 위와 같은 과정을 통해 ..
-
C 프로그램의 동작 과정C언어 2020. 3. 16. 13:09
이번 포스트에서는 C 언어로 작성한 프로그램이 어떤식으로 동작하는지에 대한 순서를 살펴볼 것이다. 1. Editor 를 이용한 프로그램 작성 ( C언어로 작성 된 파일 ) EX ) 비쥬얼 스튜디오 같은 에디터로 C언어를 이용하여 프로그램을 작성한다 ( 함수, 변수, 조건문, 반복문 등을 이용해 작성 ) 2. Compiler 를 이용한 오프젝트 파일 생성 ( 바이너리 형태로 작성 된 코드 ) Editor 로 작성한 (C 언어 형태) 프로그램을 컴파일러를 사용해 컴퓨터가 인식할 수 있는 바이너리 형태로 작성 된 파일을 생성 한다는 의미이다. 이때 컴파일과정 내부는 2단계로 나눌 수 있다. 1 단계 Preprocessor (전 처리기) : 컴파일시 가장 먼저 수행 되는 과정으로 선처리 과정을 의미한다. 이 선..
-
스택 프레임 & 재귀함수C언어 2020. 3. 13. 06:00
OS는 하드웨어 자원 중 하나인 메모리를 하나의 논리적 메모리로 관리한다. 이렇게 관리하는 것이 가상메모리 시스템이다. 이런 가상메모리는 내부적으로 커널영역과, 유저영역이 나뉘어 지며 사용자에게 허용되는 영역은 유저영역이다. 유저영역은 내부적으로 여러 공간으로 나뉘어서 관리되고 있다. 이번 포스트에서는 그중 스택영역에 대해서 설명 할 것이다. 스택 프레임 함수내부의 즉 스코프 안의 영역에서 선언 되는 변수, 매개변수는 자동변수이며 변수의 메모리할당, 반환의 과정을 OS가 자동으로 관리해 준다고 하였다. 또한 이러한 자동 변수를 관리하는 메모리가 바로 Stack 영역의 메모리인 것이다. 따라서 프로그래머라면 Stack 메모리가 어떻게 관리되는지 정확이 이해할 수 있어야 한다. 이러한 관리 형식을 스텍 프레..
-
ARM 용어 정리컴퓨터 공학 기초/용어 2020. 3. 12. 03:43
해당 포스트의 모든 내용 해당 페이지에서 퍼온 내용임 https://cafe.naver.com/embeddedcrazyboys/1346 ARM ... 대한민국 모임의 시작, 네이버 카페 cafe.naver.com 2009년 새로운 다짐으로 시작하는 첫해인데요. 노트북도 사고 여러가지로 환경은 좋아졌습니다. 이제 열공하는 일만 남은듯 합니다. 요즘 제가 Arm System Developer's Guide (2004)를 읽고 있습니다. 바이블이라고 많은 사람들이 읽으라고 했었던 것인데 늘 미루다가 이제서야 읽게 되었네요. 시작이 반 아니겠습니까 ㅎㅎ ^^;; 아래 내용은 원래 제 팀원이 정리했던 자료인데 나름 ARM에 대해 정리하는 의미는 될듯 해서 올려봅니다. -------------------------..