월 22,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨독하게 되새기는 C 프로그래밍
비선형 자료구조
혹시 비선형 자료구조 강의를 만드실 생각이 있으신가요? 있으면 듣고 싶네요 ㅎㅎ
- 해결됨독하게 되새기는 C 프로그래밍
자료 구조 공부 후에
독하게 되 세기는 C를 들어야 하나요? 아니면 자료구조 공부 전에 독하게 되 세기는 c를 들어야 하나요? 어떤 걸 먼저 들어야 더 깊이 있게 이해가 되나요? 아니면 상관 없나요?
- 해결됨독하게 되새기는 C 프로그래밍
강의자료 관련
강사님 강의자료 인쇄용으로 부탁드립니다!
- 해결됨독하게 되새기는 C 프로그래밍
마지막에 말씀하신 부분 질문드립니다.
매개변수가 레지스터보다 많아지면... 부분에서 혹시 자바도 C처럼 매개변수 처리에 레지스터를 쓰는지가 궁금한데 답변해주실 수 있다면 답변부탁드립니다!
- 해결됨독하게 되새기는 C 프로그래밍
문자열 관련 질문 드립니다
우선 예제 코드를 먼저 보여드리겠습니다. char arr[13] = "Hello World\n";char* arrr = "Hello World\n"; printf("%p\n", &("Hello World\n"));printf("%p\n", arrr);printf("%p\n", arr); "Hello World\n" 과 arrr이라는 포인터 변수의 대상이 완전히 일치한다는 것은 이해했습니다.그래서 4행과 5행의 출력 결과는 같다는 것을 실습으로 확인했습니다.그런데 6행의 출력 결과는 앞의 두 경우와 다르게 나왔습니다. 질문은 총 4가지입니다. 포인터 변수를 통해 직접 메모리 주소를 가져오는 것과배열을 통해 지역변수를 선언하여 문자 배열의 정보를 담는 것은 전혀 다른 것인가요?그렇다면 1행의 정보는 stack 영역에 저장되는 것인가요?배열도 상수화된 포인터이기에 1행과 2행이 같은 메모리 주소를 가리켜야 되는 것이 아닌가요?2행에서 선언된 포인터 변수의 경우 배열 연산자로 접근하여 쓰기를 시도할 경우 엑세스 위반의 예외를 알려주는데 읽고 쓰는 권한 때문에 다른 메모리 주소를 가리키게 되는 것인가요?
- 해결됨독하게 되새기는 C 프로그래밍
라이브러리
정적 라이브러리 보다는 동적 라이브러리의 장점이 많은 것 같은데, 정적 라이브러리도 많이 사용되나요?정적 라이브러리가 가지는 장점은 무엇이 있는지 궁금합니다.
- 해결됨독하게 되새기는 C 프로그래밍
부동소수점
float 형을 예로 들면,표현 범위가 1.17*10^(-38) 부터라고 되어있는데, 유효 숫자는 소수점 이하 6자리인 이유는 무엇인가요?
- 해결됨독하게 되새기는 C 프로그래밍
왜 변수 주소 사이에 offset이 있는 건가요?
매개변수를 아래 처럼 선언하고void Add (int a, int b, int c)메모리 창에서 보면 중간에 빈 곳 없이 3개가 연속으로 채워져 있는데 32비트 환경에서 지역 변수로 int a = 1, b = 2; 이렇게 선언을 하면 중간에 cc cc 이런 값들이 채워져 있고 12바이트 만큼 서로 떨어져 있는데요 왜 이런 현상이 발생하는 건가요?중간에 cc로 채워진 부분은 딱히 사용하는 것 같지는 않은데 낭비가 되지는 않나요?
- 해결됨독하게 되새기는 C 프로그래밍
stack 쌓는 순서
안녕하세요. 우분투 disas main으로 어셈블리어로 stack 이 어떻게 쌓는지 공부하는 중인데요.어셈블리어로 연산코드가 mov라서 제 해석이 틀린건가요? 지역변수는 선언한 순서로 Push된다고 이해했는데 실제로 해보니 달라서 질문드립니다. int type으로 정의한 $0x1, -0x30에서 주소가 -0x3a로 멀어져서 이해가 안돼서 질문 드렸습니다. 그 이후 부터는 stack이 하나씩 지워지면서 rbp 포인터로 가까워 지는 모양으로 이해했는데 char 형태에서 오히려 더 밀려나서 주소가 왜 밀린건지 이해가 되지않습니다. 물론 함수 호출이 아닌 변수를 정의한 거지만 결은 비슷할 거라 생각이 들어서 질문 드립니다. 너무 궁금해서 엉뚱한 질문이지만 알려주시면 감사합니다...
- 해결됨독하게 되새기는 C 프로그래밍
함수호출이랑 쓰레드
안녕하세요. 배운 내용을 한번 확인 및 함수호출과 쓰레드의 관계에 대해서 질문 드립니다! main함수에서 다른 함수를 호출할 때는 쓰레드가 생성되는게 아니고 하나의 main 쓰레드가 끝날때까지 진행 되는건가요?그리고 그 실행된 메인 쓰레드는 호출 된 함수로 이동하여 계산 또는 값을 수정 등을 하고 다시 반환하여 메인 함수로 가는 건가요? 만약 동시에(싱글코어로 가정하면) 이러한 실행을 하기 위해서는 쓰레드를 추가하는 것이라고 이해하면 될까요? 싱글코어로 가정한 쓰레드들은 OS가 동기화를 통해 쓰레드들간에 진행을 통제 하는건가요?
- 해결됨독하게 되새기는 C 프로그래밍
리눅스 환경도 스레드 생성 원리는 동일한건가요?
리눅스도 마찬가지로 이해하면 될까요?Os 가 프로세스에게 적절한 메모리를 할당하여 프로세스에게 자원을(메모리 공간)을 주는 것으로 이해했습니다. 프로세스 안에 구성원들(쓰레드) 개별적인 행동을 하는 주체로 이루어져 있다고 이해했습니다. (PS) 저번에 어느 강좌인지는 기억이 안나지만 리눅스는 프로세스 중심 윈도우는 쓰레드 중심으로 자원을 분배한다고 들어서 구분이 필요한가 싶었습니다. 추가로 하나의 쓰레드들은 하나의 main을 실행 시킨다고 배웠습니다. 이게 여러 싱글 코어에서는 쓰레드들끼리 컨텍스트 스위칭을 하면서 동시에 실행이 되는 것처럼 보이는 concurrency 특성이 있다고 정리가 되었는데, 이때 쓰레들끼리는 멀티 쓰레드를 표현하는 것인가요? 멀티 쓰레드가 정확히 어느 레이어에서 사용하는지 구분 짓고 싶습니다. 다른 프로세스 안에 쓰레드를 말하는 것인지 코어들에서 쓰레드를 말하는 것인지 아니면 단일 프로세스 안에 쓰레드를 말하는지 정리가 안 돼서 질문드립니다.정리를 하면서 수업을 들어야 하는데 업무랑 부족한 cs 지식이랑 빠르게 수용하려다 보니 걸리는 부분이 계속 생기는 거 같습니다. 항상 답변을 친절히 알려주셔서 감사합니다.
- 해결됨독하게 되새기는 C 프로그래밍
접근권한과 위변조
실제 위변조 해킹을 할 때 여러방법이 있겠지만, 초기에 접근 권한을 얻어서 위변조를 하는 방식도 있었을까요? Win OS상에서 Hxd 프로그램을 실행하고Linux에서 작성한 bin파일을 가져와서 위변조라는 것을 하려고 하는데 수정이 불가능 했습니다.이에 따른 3가지 가설로linux상에서 bin file에 접근 권한을 chmod를 통해 주지 않았기 때문에 수정이 불가능프로그램을 저장할 때 file을 저장 시킨 system 단은 linux OS이고, binary file을 실행한 HxD프로그램이 win Os라서 불가능 읽기 전용 파일이라서? 2번은 file이 하드디스크에 물리적으로 저장해서 부르는 데는 문제가 없을 것이라 생각했습니다.3번은 HxD가 -rw-r--r-- 1 root root 256 Nov 12 16:34 rdata.bin에서 읽기 전용 파일이기 때문이라고 생각했는데, HxD는 에디터에서 건들 수 없는 것이 말이 되나 싶었습니다..1번이 문제인 줄 알고 sudo chmod 777 bin파일이름을 통해 권한을 부여하니 위변조가 가능했음을 알게 되었습니다.그렇다면 여기서 궁금한 점은 1번에 접근 권한을 허락만 하면 (다른 컴퓨터에 원격으로 제어를 하고 root사용자의 비밀번호를 얻어서) 해킹이 되지 않을까라는 생각이 들어서 질문을 드렸습니다. 너무 궁금해서 수업과는 약간 결이 다른 질문인 점은 죄송합니다..
- 해결됨독하게 되새기는 C 프로그래밍
자료구조
연결리스트를 보면서 만든적은 있으나 머리속에서 참고자 없이 만든적은 없네요 구매는 했는데 자료구조 수업 듣고 와야겠네요. 혹시 수업이 따로 있을까요?
- 해결됨독하게 되새기는 C 프로그래밍
실습 중에 혹시 예외 발생하신 분들을 위해
Enter, Leave로 동기화 후 메인 쓰레드 루프 탈출을 위해q를 입력했을 때 간헐적으로 아래와 같은 에러가 발생하였습니다요거.. 선생님께 여쭤보려다가 문득 원인을 찾았습니다혹시 저와 같은 에러를 겪으신 분들을 위해 정리를 하자면 아래와 같습니다 메인 쓰레드 루프 탈출 까지는 정상적으로 수행됩니다다만, DeleteCriticalSection 함수 호출 후 return 코드를 호출하기 전 찰나의 순간에set 또는 reset 워커 쓰레드에서 EnterCriticalSection을 호출하여 예외가 발생합니다 즉, DeleteCriticalSection과 return의 코드 호출은원자적이지 않기 때문에 두 함수가 수행되는 중간에다른 워커 쓰레드에서 EnterCriticalSection 함수를 호출하는 경우인데요 이는, Delete돼서 존재하지 않는 임계영역에 Enter를 시도하기 때문입니다
- 해결됨독하게 되새기는 C 프로그래밍
안녕하세요 선생님~ 몇 가지 여쭤볼 게 있습니다
항상 좋은 강의 감사합니다 ~!!두 가지 정도 여쭤볼 게 있습니다 실시간 감시 엔진File System과 Driver 사이 계층에 실시간 감시 엔진을 넣을 수 있는 공간이 있다고 하셨는데 그렇다면그런 엔진은 V3, 알약 같은 백신 프로그램에서 제공해주나요? 아니면 OS단에서 기본적으로 제공해주나요?만약 OS단에서 제공해준다면 감시 결과에 접근할 수 있는 인터페이스를 열어주고유저모드의 백신 프로그램이 그 인터페이스로 감시 결과를 가져오나요?삭제삭제 시 FAT에서 Delete 필드에 마킹되는 것은 이해하였습니다그런데 굳이 파일명의 첫 글자 까지도 다른 글자로 변경하는 이유는 무엇인가요?강의 잘 보고 있습니다 감사합니다 ~
- 해결됨독하게 되새기는 C 프로그래밍
높은 메모리 위치의 쓰기 요청이 더 오래 걸린다는 설명이 이해가 가지않습니다.
안녕하세요. 강의 잘 듣고 있습니다. 강의를 보다가 이해되지않는 부분이 생겨 질문 드립니다. 하드디스크에 쓰기요청을 할 때 SSD는 HDD와 달리 물리적 장치를 사용하지 않기때문에 메모리 위치에 상관없이 빠르게 접근할 수 있는 것으로 알고있습니다. 그래서 1번 위치(995MB)에 접근해서 4byte를 쓰는 것과 1번 위치(100MB)위치에 4byte를 쓰는 것이 별로 차이 나지 않을 것이라 생각하는데요.HDD도 디스크의 외곽에 위치한 곳에 접근하는 것이 가장 오래걸린다고 알고 있습니다. 하지만 디스크 외곽에 위치한 곳이 항상 높은 메모리 위치(995MB)는 아닌 것으로 알고 있습니다.또한 공간확보라는 말씀이 잘 이해가 가질 않네요. 995MB의 위치에 4byte를 쓰는데 왜 995MB의 공간확보가 필요한 것인가요?? 파일이 0~1GB까지 연속적으로 메모리 할당을 해야하는 것인가요? 띄엄띄엄 메모리 할당을 하면 안되는 것일까요?
- 해결됨독하게 되새기는 C 프로그래밍
ShellCodeSample03.c 질문 드립니다.
강사님 항상 강의 잘 보고 있습니다.질문이 있습니다.예제에서 기계어를 배열에 담고 그 배열의 주소로 점프하게끔 되어있는데 강의에서 말씀하셨지만 배열은 데이터 영역에 있는데 어떻게 실행이 되는건가요?무슨 기능을 끄면 가능하다고 하셨는데 이 예제엔 그 기능이 꺼져있는건가요?
- 해결됨독하게 되새기는 C 프로그래밍
1강-문자(배)열 상수는 어디에 저장되는가? 관련 질문
5번째 줄에 있는 문자열과, 7번째 줄에 있는 문자열은, 같은 문자열입니다.(당연히 같은 메모리 공간에 존재)이 부분에서 궁금한 점이 생겨 질문을 하게 되었습니다. 다른 문자열로 일일이 메모리에 저장하지 않고, 굳이 같은 문자열로 저장하는 이유가 있을까요?(제 추측으로는 속도 향상을 위해서 같습니다. 하지만 개발자가 같은 메모리에 위치한다는 사실을 잘 인지하지 못한다면 오류도 빈번히 발생할 것 같은데 이유가 궁금합니다.) 같은 문자열이 아닌 다른 문자열로, 즉 다른 메모리 공간에 각각 존재시키고 싶다면, 어떻게 해야할까요? 1번에서 '개발자가 같은 메모리에 위치한다는 사실을 잘 인지하지 못한다면 오류도 빈번히 발생할 것 같은데' 라고 제가 추측했었습니다. 실제로 이러한 예시가 있는지 궁금합니다.
- 해결됨독하게 되새기는 C 프로그래밍
스택 쓰레기 값? 관련 질문 드립니다.
안녕하세요 강사님. 좋은 강의 감사합니다.강의 잘 보고 있습니다.질문이 있는데요.32비트던 64비트던 똑같이 스택 메모리에 쓰레기 값?이 있는 것이 이해가 안되서 질문 드립니다.0x00000008F9AFF924 03 00 00 00 cc cc cc cc 0x00000008F9AFF92C cc cc cc cc cc cc cc cc 0x00000008F9AFF934 cc cc cc cc cc cc cc cc 0x00000008F9AFF93C cc cc cc cc cc cc cc cc 0x00000008F9AFF944 04 00 00 00 cc cc cc cc0x00000008F9AFF94C cc cc cc cc cc cc cc cc 0x00000008F9AFF954 cc cc cc cc cc cc cc cc0x00000008F9AFF95C cc cc cc cc cc cc cc cc 0x00000008F9AFF964 cc cc cc cc 10 00 00 00 0x00000008F9AFF96C 20 00 00 00 30 00 00 00 0x00000008F9AFF974 40 00 00 00 50 00 00 00 진하게 표시한 것이 변수 값입니다.여기서 이해가 안되는 것이 int a = 3, int b = 4;를 실행하면 스택 메모리에 아래처럼 저장되는게 아니라 위처럼 띄엄 띄엄 저장되나요?0x00000008F9AFF924 03 00 00 00 04 00 00 00
- 해결됨독하게 되새기는 C 프로그래밍
안녕하세요. 질문 드립니다.
안녕하세요.강의를 몽땅.. 다 담아서 열심히 수강하고 있는 한 학생입니다.^^학습한 내용을 제대로 이해했는지 확인 하고 싶어 질문 남깁니다. OS도 결국 명령어와 데이터의 조합으로 이루어진 이진수 binary 파일인 프로그램에 불과하며disk에 저장되어 부팅 시 부트 로더에 의해 RAM으로 LOAD 되는 것이며,이 때 커널은 항상 고정 크기를 가지며 파편화가 되지 않습니다.(메모리 가상화를 OS가 해주므로)즉, 커널은 연속된 메모리 공간에 쌓입니다.프로세스들은 이 커널 영역을 공유 사용하며, 저장된 가상 메모리 테이블 등에 의해 맵핑 되구 syscall을 할 수 있습니다.또한 VMWare 등의 프로그램을 통해 가상 머신을 돌릴 때도 커널은 고정 크기를 가집니다.VM에서 실행할 때, RAM 용량 설정, Thread 갯수 설정 등의 옵션이 있는데4코어 8GB 환경이라면 VM에 2코어 4GB를 지정해주면이를 딱 조절해서 HOST와 Virtual OS는 자원을 반 씩 나눠 쓰는 개념이기 때문이고, 가상 OS 상에서의 프로세스들은 Virtual OS에 의해 가상 메모리를 관리 받습니다.검색과 고민 끝에 이렇게 이해를 했는데 잘 한 것이 맞는지,잘못된 부분이나 조언해주실 것이 있다면 부탁드리겠습니다.^^항상 잘 듣고 있습니다.감사합니다.