본문 바로가기

전체 글

(83)
커널영역, 유저영역 차이 #1 커널영역과 유저영역 차이 일반 프로그램을 실행시키기 위해 필요한 메모리 공간과 운영체제의 실행을 위한 메모리 공간을 분리 X 하면 관리하기 힘들어짐 → 유저 영역과 커널 영역을 분리하는 이유 ▶유저 영역 : 프로그램이 동작하기 위해 사용되는 메모리 공간 → 스택 영역, 힙 영역, 데이터 영역, 코드 영역으로 나뉨 ​ 사용자 모드 : 사용자 영역의 응용 프로그램이 사용하는 모드 사용자 영역의 응용프로그램이 커널 영역의 기능을 사용하기 위해서는 시스템 콜이 필요함 유저 어플리케이션은 사용자 모드에서만 실행 o + 시스템 콜이란? : 프로세스가 하드웨어에 직접 접근해서 필요한 기능을 사용할 수 있게함 Ex) 쉘에서 cat이라는 명령어를 입력, cat을 살펴보면 안에는 파일을 open하거나 read 해주는..
함수 프롤로그, 에필로그 1. 함수 프롤로그 ​ 프롤로그 = 스택 프레임 생성 = 함수 실행 준비 과정 1) push ebp : 함수가 종료된 후 ebp를 이전 함수의 ebp로 재설정하기 위해 스택에 이전 함수의 ebp를 push함 2) mov ebp, esp : 호출된 함수의 시작을 알리기 위해 현재 esp 값을 ebp에 복사함. → 프롤로그를 통해 스택프레임을 형성하고 형성된 스택프레임을 통해 함수를 구분지을 수 있게함. Esp가 가리키는 곳을 ebp도 가리키게 됨. ​ 2. 함수 에필로그 에필로그 = 함수의 기능을 수행하고 난 후, 호출한 곳으로 돌아오기 위해 스택을 복원하는 과정 ​ 1) leave : 함수를 종료하고, ebp를 이전함수의 ebp로 재설정해주는 과정 (프롤로그와 반대로 진행) 1- mov esp, ebp ..
공유 라이브러리 생성 공유 라이브러리를 생성하는 법도.. 일주일은 삽질했던 것 같다 그래도 감 잡고나서는 실수 없이 빠르게 만들었다! ​ ​ 1) 소스 코드인 c파일 생성 ~$ vi test.c ​ ​ 2) 소스코드를 오브젝트 파일로 바꿔줌 -$ gcc -c test.c Ls를 하면 test.o 라는 오브젝트 파일이 생긴 것을 확인 ​ ​ 3) 오브젝트 파일을 .so 형식인 공유 라이브러리로 바꿔줌 -$ gcc -shared -o libtest.so test.o -o 뒤의 인자는 반드시 lib”소스코드이름”.so 형태여야함 실행파일인 초록색을 나타내는 libtest.so가 생겼음을 확인 ​ 4) LD_LIBRARY_PATH 를 이용해 라이브러리 경로를 추가함 ~$ export LD_LIBRARY_PATH=$LD_LIBRARY..
리눅스 특수권한 조사, 실습 c언어, web, system 크게 세 가지 분야로 배웠고 그 중 SYSTEM에 대한 활동들 정리 깃허브 SYSTEM 폴더에 워드 파일로 정리되어있음 ​ https://github.com/MY-yeong/SYSTEM GitHub - MY-yeong/SYSTEM Contribute to MY-yeong/SYSTEM development by creating an account on GitHub. github.com d(파일 타입) rwx (사용자권한) rwx (그룹권한) rwx (다른 사용자권한) 접근 권한 파일 디렉토리 읽기 (4) 파일의 내용을 읽어올 수 있다. Ls 명령으로 하위 디렉토리를 볼 수 있다. 쓰기 (2) 파일에 내용을 추가하거나 수정할 수 있다. 디렉토리 아래 새 파일을 생성하거나, 제거..
PHP 파일 업로드 & 다운로드 1. PHP File up & downloadupload download + enctype="multipart/form-datamultipart/form-data는 파일 업로드가 있는 양식요소에 사용되는 enctype 속성의 값중 하나 multipart는 폼데이터가 여러 부분으로 나뉘어 서버로 전송되는 것을 의미 속성값 설명 application/x-www-form-urlencoded 기본값으로, 모든 문자들은 서버로 보내기 전에 인코딩됨을 명시함. multipart/form-data 모든 문자를 인코딩하지 않음을 명시함. 이 방식은 요소가 파일이나 이미지를 서버로 전송할 때 주로 사용함. text/plain 공백 문자(space)는 "+" 기호로 변환하지만, 나머지 문자는 모두 인코딩되지 않음을 명시함..
정규표현식 1. 정규표현식 ​ ▶특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식언어 주로 문자열의 치환이나 필터의 용도 ​ 구성요소 : 메타문자와 추출하고 싶은 문자를 합친 것 / 패턴의 양식에 따라 문자열에서 문자를 추출 메타문자 : 문자를 설명하기 위한 문자, 문자의 구성을 설명하기 위해 원래의 의미가 아닌 다른 의미로 쓰이는 문자를 말함 연산자 설명 ^ 문자열의 시작 $ 문자열의 끝 [] []안의 문자들 중 하나이상의 문자를 나타냄 A-Z A~Z 사이의 문자를 나타냄 {최소개수, 최대개수} 바로 앞의 문자의 반복 횟수를 지정 (문자열) 문자열의 그룹 지정 | OR 연산자 [[:alnum:]] 알파벳과 숫자 [[:alpha:]] 알파벳 [[:xdigit:]] 16진수, 0-9, a-f, A-F [[..
HTTP METHOD Http 통신, 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식 보통 Form 태그의 method 속성에 전달 형식을 지정 서버에서 method 방식을 제한할 수 있음 Method 설명 GET 자원 요청, 요청 파라미터를 URL에 붙여서 전송 POST 자원 요청, 요청 파라미터를 body에 붙여서 전송 HEAD HTTP Header 정보만 요청 PUT URL 자원을 생성하도록 요청 DELETE URL 자원을 삭제하도록 요청 OPTIONS 응답 가능한 Method를 요청 ▶ GET -클라이언트의 데이터를 URL 뒤에 붙여서 보냄 -URL 뒤에 ‘?’ 마크를 통해 URL의 끝을 알리고 데이터 표현을 시작 -URL에 붙이므로, HTTP 패킷의 헤더에 포..
Sever Side & Client Side 1. Sever Side ▶ Sever-side: 클라이언트와 서버 구조의 서버쪽에서 행해지는 처리 클라이언트로 보낼 웹 페이지를 만들며 중요한 작업들(DB 관련)등을 수행함. 대표적인 예시 – Java, PHP, Ruby, Python ​ 장점 - 관리자의 입장에서, 데이터 위조의 가능성을 줄일 수 있음 - 서버 쪽의 데이터가 확실한 진위이며 클라이언트 쪽에서 위조해서 안되는 데이터일 경우 서버 사이드로 처리 Ex. 인터넷 뱅킹의 이체 관련 처리, MMORPG의 게임 아이템 관련 처리에서는 클라이언트 사이드 처리를 최소화 해야함 ​ 단점 - 서버 관리자의 입장에서, 서버의 처리 부담이 커져 서버 비용이 증가할 수도 있음. 2. Client Side ▶ Client-side: 클라이언트와 서버 구조의 클..