묻고 답해요
150만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
순위 정보를
불러오고 있어요
-
미해결FreeRTOS 프로그래밍
configCHECK_FOR_STACK_OVERFLOW 관련
스택오버플로우 관련 문제가있어 질문드립니다.FreeRTOSConfig.h 에 configCHECK_FOR_STACK_OVERFLOW 를 정의했는데 task.c 에 vApplicationStackOverflowHook 함수가 활성화가 되지않아 문의드립니다.
-
해결됨그림으로 쉽게 배우는 운영체제
캐시용량이 매우 크다면 어떻게되나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 레지스터의 적은 용량을 이유로 캐시가 있다고 생각됩니다. 그럼 만약 캐시가 용량이 커지면, 그만큼 속도가 빨라지나요? 만약 그렇지 않다면 캐시 용량이 커지는 만큼 캐시내부의 검색속도가 오래걸려서 그런건가요?
-
해결됨한국에서 제일 쉬운 리눅스 커널 강의
라즈베리파이 용량부족
이전 강의에서 커널빌드 한 후 용량을 확인해보니 out디렉토리가 28G를 차지해버려서 뒤에 삼바를 설치하는 작업을 못하고있습니다.. 강의와 다른건 커널6.6버전입니다. 해결법이 있을까요??
-
해결됨곰책으로 쉽게 배우는 최소한의 운영체제론
플랫폼 bit관련 질문입니다
'메모리관리 개요' 강의에서 궁금한 사항 질문드립니다.CPU 64bit + OS 64bit => 64bit 플랫폼이라고 하셨는데,CPU와 OS의 bit가 다르다면 플랫폼 bit는 낮은 쪽으로 맞춰지는 것인가요?
-
미해결그림으로 쉽게 배우는 운영체제
3번째 복습 스터디📖 를 진행하고 스터디원분들과 나눈 질문 입니다. (운영체제)
질문) 상호배제 기법중에서 세마포어와 모니터 이외에 뮤텍스도 있던데 혹시 강의 내용에서 뮤텍스가 빠진 이유가 있을까용?
-
해결됨CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
싱글톤 패턴 강의에 나온 예시 질문
안녕하세요 큰돌님 싱글톤 패턴 강의를 듣다가 예시 코드를 보고 궁금한 점이 있어서 질문 드립니다. 강의에서 보여주셨던 mongoDB의 커넥션 코드에서 싱글톤 패턴은 DB.instance가 존재하면, 기존의 DB.instance를 반환함으로써 인스턴스 생성에 대한 비용을 절감하는 것이라고 이해하였습니다.그런데 여기에서 connect()함수의 this.instance는 인스턴스 내부에 instance라는 속성이 없기 때문에 undefined가 되므로 DB.instance를 반환해야 하는게 아닌지 질문드립니다.
-
미해결그림으로 쉽게 배우는 운영체제
2번째 복습 스터디📖 를 진행하고 스터디원분들과 나눈 질문들 입니다. (운영체제)
.exe 더블클릭 시 프로세스가 새로 생성되는 걸까요 아니면 0번 프로세스를 복사해서 사용하는 것일까요?강의에서는 강의에서 운영체제가 부팅 되었을 때 0번 프로세스가 생성되는데 이 작업은 부팅 시 최초 1번만 실행되고 이후의 프로세스 생성은 0번 프로세스를 fork() 복사해서 사용한다고 했습니다. 그리고 .exe파일을 실행하면 여러 과정을 거쳐 프로세스가 생성된다고 언급되었습니다. 프로세스는 부팅할 때 1번만 생성되는데 강의에서 언급하신 .exe파일을 클릭해서 프로세스를 생성하는 과정에 대해 의문이 생겼습니다. 그래서 리눅스 부팅방식에 대해 검색해봤는데리눅스에서 부팅이 되면 커널에서 0번 프로세스 생성(강의에서 배운방식) -> 이 0번 프로세스는 커널 내부의 프로세스로 사용자가 직접적인 관련이 없음. 실제로 사용자가 접하는 프로세스는 이 0번 프로세스를 fork() 한 1번 프로세스다.1번 프로세스는 최초 사용자 공간의 프로세스이고 init 또는 systemd를 생성한다.그 이후부터 강의에서 배운 내용처럼 1번 프로세스(강의에서 0번 프로세스)를 기준으로 fork() 하여 자식 프로세스들을 생성한다.라고 검색되었습니다. 그럼 모든 프로세스는 부팅시에 만들어진 0번 프로세스를 복사해서 만들어진 것일텐데 그럼 .exe를 실행했을 때 새로운 프로세스가 생기는 과정은 무엇인지 궁금합니다.2. 운영체제가 CPU스케줄링 알고리즘을 선택하게 할 수 있나요?검색했을 때 리눅스의 경우리눅스 기준으로 운영체제가 고정된 CPU 스케줄링 알고리즘 CFS 사용한다.운영체제는 특정 프로세스 그룹에 SCHED_RR을 적용하고, 다른 프로세스 그룹에 SCHED_FIFO나 다른 정책을 적용할 수 있다.라고 언급되었습니다. 만약 운영체제가 특정 알고리즘을 적절한 상황을 스스로 판단해서 해당 CPU 알고리즘을 스스로 사용하는것이라면, 사용자가 직접 MLFQ 스케줄 알고리즘을 사용해야 하는 작업을 RR등의 다른 스케줄링 알고리즘으로 작업하게끔 명령 할 수 있을까요? 3. 91초 - MLFQ 왜 90초가 아니라 91초인가?MLFQ 강의 3:59초I/O 사용율에서 P2가 기다린 시간이 91초가 아니고 90초가 아닌가용?타임 슬라이스가 100초이고 p1 프로세스가 10초를 사용하고 p2 프로세스가 그럼 90초를 기다린게 아닌가요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
운영체제 페이징교체 알고리즘 OPT 13:30 질문 드립니다.
안녕하세요. 운영체제 페이징교체 알고리즘 OPT 13:30 질문 드립니다. 문자열 보면 4도 있는것 같은데 안쓰는 이유가 있을까요?
-
미해결FreeRTOS 프로그래밍
포팅 부탁드립니다!
-------------------------------------------------- 사용하고 싶은 ST 보드명: NUCLEO-U5A5ZJ-Q (STM32U5A5ZJ)- 사용하시는 컴파일러(stm32cubeide) 버젼: 1.16.0-------------------------------------------------안녕하세요 선생님,강의 수강하면서 포팅도 직접 해볼 예정인데, 선생님께서 포팅해주신 결과물이 있다면 비교하면서 피드백하기가 수월할 듯 하여 요청드립니다.지난번 요청했다가 취소했는데, 이 보드로 진행해보려 합니다.미리 감사의 말씀 먼저 드리겠습니다!
-
미해결그림으로 쉽게 배우는 운영체제
MLFQ설명에서 P1도 컨텍스트 스위칭이 발생하는건가요??
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 컨텍스트 스위칭은 다른 프로세스를 실행시킬 때 발생한다고 알고있는데 MLFQ설명의 P1의 경우는 타임슬라이스를 1초로 해도 컨텍스트 스위칭이 발생하게 되는건가요?? 같은 프로세스의 작업이라 생각해서 발생하지 않는줄 알았습니다..
-
해결됨그림으로 쉽게 배우는 운영체제
임계구역 궁금증
-수업을 듣다가 궁금한 점이 생겨서 문의드립니다.임계구역에은 하나의 프로세스만 진입하고, 최대한 빠르게 나와야 된다고 말씀하셨는데, 만약 임계구역 안에서 컨텍스트 스위칭이 이루어질 경우에는 어떻게 되나요? 해당 프로세스가 대기상태이지만 여전히 임계구역에서 나온건 아니니, 다른 프로세스는 진입할 수 없나요? 만약 진입할 수 없는 경우에는 이 임계구역에 대한 요청이 쌓이게될텐데 이런 경우 어떻게 해결해야하나요?
-
미해결CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
가상메모리 개념에 대해서
강사님의 가상메모리 강의를 듣고, 가상메모리는 무엇인가에 대해 대략적인 내용을 학습할 수 있었습니다. 이에 제가 이해한 개념이 올바른 내용인지 확인 부탁드리겠습니다. 최초에 저는 가상메모리에 대해 이해가지 않았던 부분이 있었습니다. 가상메모리는 실제 메모리보다 더 크게 보이게하는 기술이라는 맥락으로 설명을 주셨던 거 같습니다. 여기서 저는, "그러면 그 가상메모리는 어디에서 오는 건데?" 였습니다. 메모리라 하면, 주기억장치든 보조기억장치든 그 장치들이 실존하는 것이며, 용량도 정해져 있는데, 도대체 이 가상메모리는 어떤 메모리를 기반으로 제공되는 것인가. 이러한 생각이 드니, 어떻게 이해하려고 해도 쉽게 이해가 가지 않았습니다. 이에 구글링과 다른 영상 자료를 보며 이해에 도달했는데, 내용은 다음과 같습니다. 프로그램이 RAM 위에 올라가면 프로세스가 된다. (이는 강사님께서 말씀해주신 내용으로, 해당 개념을 기반으로 이해를 도모했습니다.)OS 는 프로세스에게 가상 주소 공간을 제공한다. (32biit 기준으로 4gb, 이때 가상 주소 공간과 가상 메모리 공간은 다른 개념)프로세스 내의 가상 주소 공간은 페이지 단위로 나눠지고, 논리 주소가 부여되며, stack 이나 heap, code 등이 해당 공간에 할당된다.이때 사용되는 페이지만이 RAM 의 프레임과 매핑되며, 사용되지 않는 페이지는 보조기억장치에 저장된다.이에 프로세스의 가상 주소 공간의 크기는 32bit 기준 4gb 지만, 실제로 운용되는 것은 1mb ~ 2mb 이다. (예를 들어) 이때 "가상 메모리는 실제 메모리보다 더 크게 보이게 하는 기술이다" 라고 말씀하신 이유는 실제 프로세스는 크기가 4gb 라고 치고, 불필요한 부분까지 모두 RAM 위에서 자리를 잡고 있다면, 소수의 프로세스 밖에 운용하지 못할 것이다.-> 이에 필요한 부분만 RAM 에 올림으로써 자원의 낭비를 줄이고, 많은 프로세스를 운용하게 할 수 있게 하기 때문이라고 이해를 했습니다. 추가적으로 이해한 내용으로는 가상메모리를 사용하는 이유로써,임의의 프로세스가 죽었을 때 OS 에서 이를 감지하여, 해당 프로세스의 페이지와 매핑된 프레임을 반환한다.이를 통해 다른 프로세스는 반환된 공간을 사용할 수 있게 된다.만일 가상메모리 기법이 존재하지 않는다면, 프로세스가 죽어도 RAM 위에서 자리를 차지할 것이며, 또 다른 프로세스들이 계속해서 죽어갈 때 끝내 RAM 에는 자리가 존재하지 않을 것이다. 위 내용과 같이 이해를 했으며, 최종적으로 가상메모리를 정의한다면, "가상 주소 공간을 주 기억장치와 보조 기억 장치 사이에서 매핑하여 효율적으로 메모리를 관리하는 기법이다" 혹시 제가 이해한 부분에 대해서 잘못된 점이나 보완할만한 점이 있다면, 조언을 부탁드리고 싶습니다.
-
미해결FreeRTOS 프로그래밍
포팅 부탁드립니다!
-------------------------------------------------- 사용하고 싶은 ST 보드명: NUCLEO-H7S3L8 (STM32H7S3L8H6)- 사용하시는 컴파일러(stm32cubeide) 버젼: 1.16.0-------------------------------------------------안녕하세요 선생님,강의 수강하면서 포팅도 직접 해볼 예정인데, 선생님께서 포팅해주신 결과물이 있다면 비교하면서 피드백하기가 수월할 듯 하여 요청드립니다.차후에는 CubeIDE 말고 CMake 환경도 직접 구축하여 빌드 및 플래싱해보는 것이 목표입니다.미리 감사의 말씀 먼저 드리겠습니다!
-
해결됨넓고 얕게 외워서 컴공 전공자 되기
강의의 대한 추가질문
해당 강의 User mode와 Kernel mode 마지막으로 가상화의 대한 작동과정을 설명해주셨는데 이걸 좀 더 자세하게 공부하기 위해선 운영체제를 공부하면 되는걸까요?
-
미해결리눅스 커널의 구조와 원리: 인터럽트 [저자 직강 1부-5]
인터럽트 처리 순서
Big Picture 사진을 보면 인터럽트 발생시 GIC에서 우선적으로 처리한 후 익셉션 핸들러가 실행되는 걸로 나와있는데,인터럽트 처리 콜스택을 보면 익셉션 핸들러가 먼저 실행되고 gic 관련 핸들러 함수가 호출되는 것 같습니다. 둘이 순서가 왜 다른지 궁금합니다!
-
해결됨FreeRTOS 프로그래밍
펌웨어 설계시 RTOS 적용 여부 질문
안녕하세요몇년전에 회사에서 진행중인 프로젝트에 RTOS를 적용하였다가 퍼포먼스를 만족시키지 못해서펌웨어로 다시 기능 똑같이 만들어서 해보니까 성능을 만족해서펌웨어로 변경해서 작업을 진행한적이 있었는데 메인 기능은 상위제어기로부터 1ms 주기로 패킷을 수신받으면 100us 내로 응답해야하는 조건에 CRC 체크도 해야하는 상황이었고 통신 기능 뿐만아니라 다른 기능에서 사용하고 있는 프리페럴이 많아서 통신 기능외에 주기적으로 us단위의 인터럽트가 많이 발생되는 상황이였구요.RTOS로 만들었던 SW에서는 기본적으로 각각 프리페럴을 담당하는 TASK를 두고 설계를 했었는데RTOS에서는 위에 나왔던 통신주기를 ISR에서 TASK로 이벤트 전달하는과정에서 리얼타임을 만족시킬수 없었습니다.그래서 RTOS를제거하고 그냥 펌웨어로 만들어서 구조는 똑같이하고멀티태스킹을 인터럽트 처리했는데 성능이 만족스럽게 나왔습니다. 제가 생각한 바로는RTOS가 올라간 시스템에서는 기본적으로 스케줄링하는 커널이 들어가서 기본적으로 자원점유도 하고거기에 인터럽트도 관여되면 컨택스트 스위칭이 자주일어나서 오버헤드가 더 심해질수있다.펌웨어는 그냥 풀로 돌면서 인터럽트로 인한 크리티컬 섹션만 신경쓰면 되기에 성능을 만족한게 아닐까 하는 생각이 듭니다.물론 제가 RTOS에 대해 아는게 없어서 SW가 요구사항을 만족시킬수 없었던것일수도 있지만컨택스트 스위칭으로 인한 오버헤드가 리얼타임에 영향을 미치는 가혹한환경이라면 베어메탈 펌웨어를 사용하는게 맞다고 느꼈습니다. 강의에서도 말씀하셨다시피 ISR로도 멀티태스킹이 된다면 RTOS를 적용하지 않아도 된다고 하셨는데SW가 복잡해진다면 FreeRTOS API를 사용할수있으니 유지보수 측면이나 TASK간 동기화에 있어서 편리하다고 생각이 듭니다. 제 질문은펌웨어를 설계할때 RTOS를 적용할지 아니면 베어메탈 펌웨어로 가냐 적용여부를 어떻게 판별해야할까요?일단 저는 인터럽트가 많이 일어나는 시스템에서는 RTOS가 성능에 영향이 있다고 느껴집니다.
-
해결됨그림으로 쉽게 배우는 운영체제
프로그램과 프로세스 강의를 듣던중 질문입니다!
프로그램이 있고, 프로그램이 메모리에 올라간것을 프로세스라고 하는 것을 배웠습니다. 그런데, 프로세스를 설명해주실때Code, Data, Heap, Stack을 설명 해주셨고, c언어 컴파일 예제를 보여주시면서 test.exe가 생성되는 과정을 설명해주셨습니다. 그런데 제가 좀 헷갈리는게 자바 실행파일은 어떻게 설명할 수 있을까요?자바는 Code, Data, Heap, Stack이 아니라, method영역이라던지 다른 영역이 있는 것으로 알고있는데, 자바로 만든 프로그램도 code, data, heap, stack을 가지나요?? 그러면 method 영역이라던지 이건 어떻게 되는걸까요.... 자바로 만든 .exe 실행파일과 c언어로 만든 .exe 실행 파일은 메모리 구조가 다른건가요??? 강의 설명은 c언어일때만 성립하는 것인가요..?
-
해결됨넓고 얕게 외워서 컴공 전공자 되기
컴퓨터가 글자를 다루는 방법 -> 코드체계 질문
안녕하세요, 컴퓨터에서 글자를 사용하기 위해 글자와 대응이 되는 숫자를 매핑해서 사용하는 코드체계가 있고 이 코드체계를 표준 시킨게 ASCII라는 것도 이해가 됐습니다만.컴퓨터는 이 코드체계라는 걸 이해할 수 없고 이 코드체계에 따라서 65라는 값이 들어왔을 때 대문자 'A'을 문자로써 출력할건지 아니면 숫자 65라는 값을 출력할건지의 대한 기준은 결국 사람이 소프트웨어를 만들어서 컴퓨터에 내장하는 방법밖에 없잖아요?여기서 궁금증이 생겼습니다. 이 코드체계 소프트웨어를 만들어서 탑재 시키는건 메인보드 등 컴퓨터를 만드는 회사인가요?아니면 운영체제를 개발하는 곳인가요? 아니면 컴파일러를 만드는 사람들인가요?컴퓨터 부팅 과정에서 컴퓨터 전공이 아니더라도 알 수 있는 BIOS진입이라던가 보이는 영어문자들을 보면 컴퓨터를 만들때 탑재 시킨 것 같긴 한데.. 아니면 컴퓨터를 만들때든, 운영체제든, 컴파일러든 각 모든 과정에서 표준 코드체계를 탑재시켜야 하는건가요?
-
미해결CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
혹시 포트폴리오 이벤트 아직 진행 중이실까요..?
안녕하세요 선생님 🙂 커뮤니티를 보니 며칠 전에 포트폴리오 첨삭 이벤트를 진행하신 것 같더라구요.혹시 아직 진행 중이신지 알고싶습니다 ^^ 감사합니다 :)
-
해결됨넓고 얕게 외워서 컴공 전공자 되기
진법변환 개념정리
2진수 -> 16진수"1100 0010" 라는 2진수를 16진수로 변환하기 위해선 16진수 한자리는 4비트를 사용하니까 4비트씩 분리해서1100 = C / 0010 = 2니까 "0xC2"16진수 -> 2진수"0xE0" 라는 16진수를 2진수로 변환하기 위해선 각 자리마다 2진수로 변환 해준다음 나열E = 1110 / 0 = 0000 즉 "1110 0000"2진수 -> 10진수"0010 0101"을 10진수로 변환하기 위해선 알려주신 방법대로(2^5 * 1) + (2^2 * 1) + (2^0 * 1) = 37이것을 응용해서16진수 -> 10진수"0xF4" = (16^1 * 15) + (16^0 * 4) = 244이런 식으로 각각 변환하는게 맞을까요?
주간 인기글
순위 정보를
불러오고 있어요