묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
동기화 질문입니다.
안녕하세요! 강의 정말 유익하게 잘 듣고 있습니다.이번에 동기화 단원을 듣게 되면서, 몇가지 궁금증이 생겨서 질문을 하게 되었습니다. A 프로세스 혹은 쓰레드가 임계구역에서 작업을 수행하고 있었다고 가정을 하겠습니다. 이때 cpu가 지정한 타임 슬라이스를 초과하여 cpu를 사용하였고, 임계 구역에서의 진행이 완료되지 않은 상태로 타이머 인터럽트가 발생하였다고 가정을 하겠습니다. 이러한 상황에서 만약 새로운 프로세스 B가 해당 임계구역에 접근을 하게 된다면, 이에 대한 부분은 어떻게 처리가 되는 것인지 궁금합니다. 기존의 공유 자원이 업데이트 되지 않은 상태로 진행이 되게 되면, 분명히 레이스 컨디션이 발생할 수 도 있다고 생각이 듭니다. 세마포의 경우에는 임계 구역에 진입할 수 있는 프로세스의 개수, 즉 사용 가능한 공유 자원의 개수를 전역변수로 설정하여 여러 개의 공유자원을 관리할 수 있다고 하셨습니다. 그렇다면 세마포의 경우에는 각 공유자원의 종류에 따라 구분하여 관리는 할 수 없는 것인지 여쭤보고 싶습니다. 이것이 세마포의 단점? 이 되는 것인지 궁금합니다. 운영체제는 처음 공부해 보는 것이라서 질문이 좀 난잡하고 불명확할 수 있다는 점 죄송합니다.열정적인 강의 덕분에 재미있게 공부를 할 수 있는 것 같습니다!항상 감사합니다.
-
미해결운영체제 공룡책 강의
자바 Bounded-Buffer 코드 질문 있습니다.
안녕하세요. 좋은 강의 잘 듣고 있습니다. 다름이 아니라 해당 부분 자바 코드에서 의문점이 있어 질문 드려봅니다. synchronized 식별자를 붙인 메서드가 여러 개 있을 때 모니터 락이 각 메서드별로 생기는지 혹은 전체를 관리하는 하나의 모니터 락만 생기는지가 전 강의에서 언급이 되었는지 모르겠지만, 잘 기억이 안나서,, 두 케이스 모두 질문이 드립니다. 모니터 락이 각 메서드별로 생기는 경우take와 give는 count라는 공유 변수에 접근하고 있다고 생각됩니다. synchronized를 통해 각 메서드별로 mutual exclusive가 지켜지지만, take와 give 사이에서는 race condition 문제가 발생하지는 않나요 ?? 예를 들어 buffer size = 3, count = 1인 경우 give와 take가 동시에 실행될 수 있고, count++과 count--에서 race condition 문제가 발생할 수 있다고 생각했습니다. 직접 테스트 해 본 결과 해당 문제는 발생하지 않았는데, 왜 그런지가 궁금합니다. 모니터 락이 전체를 관리하는 하나만 생기는 경우하나의 메서드에서 무한정 대기하는 경우가 생길 것 같습니다. 아마 첫 번째 케이스가 맞다고 생각하지만 혹시라도 두 번째 케이스라면, take에서 count=0일 때 while문 안에서 wait()을 하는데, give 메서드가 실행이 되지 않으니 무한정 대기할 것이라고 생각됩니다. 쓰다보니 굉장히 길어졌습니다 ㅜㅜ.. 읽어주셔서 감사합니다.
-
해결됨넓고 얕게 외워서 컴공 전공자 되기
섹션1 - 외워야 할 단위 체계 #2 부분 질문
안녕하세요. 최호성 선생님.현재 좋은 강의 잘 수강하고 있습니다.넓고 얕게 외워서 컴공 전공자 되기 강의중섹션1 - 외워야 할 단위 체계 #2 부분에서 이해가 안 되는 부분이 있습니다.비슷한 질문을 강의 내 커뮤니티에서도 참고를 했는데도 약간 이해가 안 돼서 직접 문의드립니다.16비트의 경우 65,536가지의 경우의 수가 있고, 65,536 Bytes로 단위가 올라가면서 64KB가 된다고 하셨는데단위가 올라가는 개념은 이해가 되나메모리에서 데이터를 다루기 위한 최소 단위가 1바이트이고 1바이트는 곧 8비트를 의미하는 것으로 압니다.그럼 16비트 자체는 2바이트라고 볼 수 있을 텐데 강의에서 알려주시는 16비트는 65,536가지의 경우의 수가 65,536 Bytes가 되는 개념이 '1바이트를 관리하기 위한 메모리 주소가 총 65536개 있음'이라고 질문 글에 답변 주신 것을 봤습니다.16비트 -> 2바이트16비트 -> 65,536바이트(메모리 주소 개수)이렇게 놓고 본다면 위의 16비트 -> 65,536 바이트라는 개념에서 바이트->비트 단위로 다시 계산해 본다면 524,288비트로 계산이 되어서 위 2개의 경우가 서로 다른 개념이라고 생각이 되기는 하는데.. 어떻게 다른 개념인지 이해가 잘 안됩니다.'16비트 -> 2바이트'는 단순 메모리 저장 단위 개념?'16비트 -> 65,536바이트'는 운영체제 내부에서 메모리 사용되는 값의 개념?이렇게 두 가지가 다른 경우라고 이해하는 게 맞을까요?말씀처럼 넓고 얕게 외우고 싶은데 이 부분은 헷갈려서 어떻게 얕게 외워야 할지 모르겠습니다...개념이 제대로 안 잡혀서 질문을 제대로 드렸는지도 모르겠습니다..도움 부탁드립니다!감사합니다.
-
해결됨운영체제 공룡책 강의
window10 이 아니면 안되나요??
윈도우10보다 이상이면 리눅스 프로그래밍 안되는걸까요??
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
FIFO second-chance와 LRU의 성능 차이가 나나요?
안녕하세요 강의 잘 듣고 있습니다.페이지 교체 알고리즘 중 가장 오래 사용되지 않은 페이지의 스왑 아웃과 먼저 들어온 페이지들 중 참조되지 않은 페이지를 선별하여 스왑아웃 하는 것이 결과적으로 비슷한 결과가 나올 거 같은 생각이 들었습니다.제가 잘 이해한 게 맞다면 예시로 들어주신 참조열 2313523423의 경우에도 두 방식이 동일하게 2, 1, 5를 스왑 아웃 하는 결과가 나오는 듯 합니다.이 둘의 사용성에 대한 더 구체적인 차이를 알 수 있을까요?
-
미해결그림으로 쉽게 배우는 운영체제
0번 프로세스 1번 프로세스 질문이요
0번 프로세스와 1번 프로세스의 차이가 궁금해서 질문해봅니다 이 사진이맞는걸까요 아니면 이 사진이 맞는걸까요?
-
미해결CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
프로젝트
안녕하세요 이번에 팀 프로젝트를 하게된 백엔드 취준생입니다. 프로젝트에서 중요하게 다룰 내용 중 하나가 팀원과의 소통 및 협업이라구 하셨는데요, 프론트엔드 개발자는 두 명있는데 백엔드는 저 혼자인 상태입니다. 근데 나중에 백엔드 개발자가 저 혼자라는게 소통 및 협업에 있어 면접관들이 마이너스로 볼 요소가 되나요?만약 백엔드 개발자가 혼자라서 마이너스 요소가 된다면 중간에라도 백엔드를 한 명 더 추가해야 되나 싶네요 ㅜㅠ
-
해결됨곰책으로 쉽게 배우는 최소한의 운영체제론
자료구조 공부
안녕하세요, 선생님.새해 복 많이 받으세요.좋은 강의 잘 보고 있습니다.운영체제 강의 수강하면서 운영체제 및 가상 메모리를 잘 이해하려면 C언어를 공부해야하는 게 전제 조건일까요.. ?저는 1년차(비전공자)백엔드 개발자로 자바스크립트를 사용하고 공부해오고 있는데요... 선생님의 로드맵으로 강의를 수강하면서 c언어 공부도 해야 이 강의를 좀 더 이해할 수 있는 건가 해서 문의드립니다. 감사합니다.
-
해결됨FreeRTOS 프로그래밍
LCD 펌웨어 코드 질문입니다
안녕하세요. LCD 펌웨어 코드는 개발자가 일일이 작성해야하는 것인가요? 아니면 해당 제품을 사면 펌웨어 코드가 같이 오는 건가요?
-
해결됨FreeRTOS 프로그래밍
뮤텍스 질문입니다.
안녕하세요. 뮤텍스 강의 수강중에 질문이 있습니다. 뮤텍스는 우선순위전도 문제를 해결하는 능력이 있는 세마포어라고 볼 수 있습니다. 이 우선순위전도 문제를 뮤텍스를 사용하면 저절로 해결되는 것인가요?
-
해결됨넓고 얕게 외워서 컴공 전공자 되기
Native Code 질문입니다!
안녕하세요! Native Code와 Managed Code 관련해서 질문을 남겨 봅니다! C언어의 컴파일 과정에서, 목적 파일이 생성 되지않습니까?이러한 목적 파일이, 링킹 과정을 거치면 실행 파일이 되는걸로 알고 있습니다 여기서 질문입니다!실행 파일의 적힌 실행 코드가, Native Code와 같은 의미인가요?JVM과 같이, 소프트웨어 CPU(virtual machine)를 예로 들었을 때, 컴파일 과정을 거치고, 최종적으로 만들어진 실행파일의 적힌 코드는 Managed code라고 보면 되는걸까요? 감사합니다!
-
해결됨넓고 얕게 외워서 컴공 전공자 되기
가상메모리 관련잘문입니다
Hdd의 용량을 많이 사용했을때 컴퓨터가 느려졌다 느껴지게되는것이 가상메모리로 할당할 영역이 줄어들어서인가요? 같은 양의 연산을 할 때 메모리의 용량이 적을수록 할당하는 가상메모리의 용량이 커지나요?
-
미해결CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
언어
현재 파이썬과 html만 어느정도 익혀둔 상태인 입문자 입니다. 현재 json강의만 들었는데 json은 파이썬의 dictionary덕에 이해할 수 있었습니다. 그런데 책을 보니 주로 수업에서 사용하는 언어가 자바나 자바스크립트가 많더라고요 그래서 혹시 다른 챕터를 들을 때 자바나 자바스크립트에 대한 이해도 없이 따라가기가 어려운지 궁금하니다.
-
미해결홍정모의 따라하며 배우는 C언어
운영체제 구성 그림에서 입출력 장치의 위치
안녕하세요. "0.3.운영체제가 해주는 일들" 설명을 듣다가 의문점이 생겨서 질문 남깁니다. <그림1>위의 그림을 보면서 저는 사용자가 하드웨어 자원을 사용하기 위해서는 직접 하드웨어를 사용할 수 없기에, 응용 프로그램을 실행하고 응용 프로그램은 커널을 통해 하드웨어 자원을 사용하는 것이라고 이해했습니다. CPU, 메모리, 보조기억 장치는 직접 사용자와 상호작용을 할 수 없다는 것은 이해가 되지만(직접 손으로 조작하여 사용할 수 없기 때문), 입출력 장치는 사용자와 직접 상호작용 한다고 생각했습니다. 왜냐하면 직관적으로 생각을 해보면, 프로그램을 실행 할 때 "마우스로 응용프로그램을 클릭 or 키보드로 명령어 입력(입출력 장치 사용)-> 응용 프로그램 실행-> Kernel을 통한 하드웨어 사용(CPU, 메모리, 보조 기억장치)" 과 같은 과정이 일어나기 때문에, 입출력 장치는 사용자와 제일 먼저 상호작용 하는 것 아닌가? 라는 생각을 했습니다. <그림2>궁금증을 해결하기 위해 검색을 해보니, 다음과 같은 그림을 찾을 수 있었습니다. 위 그림을 보면 키보드 마우스 등등 입출력 장치는 사용자와 가장 먼저 상호작용을 하는 것처럼 나와있고 이는 직관적으로 이해가 됩니다. 요약해서 질문을 드리면 입출력 장치는 사용자와 가장 먼저 상호작용 하는 하드웨어임에도 불구하고 왜 <그림1>에서는 사용자와 가장 멀리 떨어진 부분에 위치하는 지 궁금합니다. 긴 글 읽어주셔서 감사드립니다.
-
미해결FreeRTOS 프로그래밍
PuTTy에 출력되지 않습니다
장치관리자에서 port를 확인해서 seiral line과 speed를 설정하고 open을 했습니다.01_ TASKMAN을 디버그 했습니다.그런데 영상처럼 출력되지 않고 커서만 표시됩니다.어떻게 해결해야 하나요?
-
해결됨그림으로 쉽게 배우는 운영체제
메모리(Code영역) 관련 질문
안녕하세요. 감자선생님!금일 작성한 질문 답변 감사합니다~답변 확인중에 문득 떠오른게 있어, 새 게시글로 작성하였습니다. [이전질문]메모리 Code 영역에 프로그래머가 작성한 코드가 기계어로 올라가고프로그램 실행 시, Code영역(메모리)에 실행에 필요한 부분만 올라가게됩니다.여기까지 확인했습니다.그리고 이전 질문 내용은100번쨰 줄 : int a = 5;101번쨰 줄: printf(a);위 상황에서, 만약에 101번쨰줄 명령문 통째로 Rom에 저장되어있었으면운영체제가 어떻게 알고 저 데이터를 불러(스왑)하는지? 질문드렸었는데요.비유를 하면 요리 레시피가 1번 ~ 10번까지 적혀있는데 2번까지 순차적으로 요리 하다가3번이 없어진 상황입니다.(다음 실행할 명령 101번쨰줄에 해당하는 기게어가 Ram에 없으니 실행이 더 없는 상황)[확인질문]답변 주신 내용중에 "해당 코드는 메인메모리로 불러와서 실행해야겠죠? ㅎㅎ"여기서 곰곰히 생각해보니, PCB에 프로그램 카운터가 있는게 떠올랐습니다!!!!!!!그러면 이 프로그램 카운터에서 다음 실행할 명령 주소를 아니가 101번쨰에 해당하는 데이터(명령문)을Rom에서 Ram으로 불러오는게 가능하다 라고 이해했는데 맞는지 확인 질문드립니다.
-
해결됨그림으로 쉽게 배우는 운영체제
메모리관련 질문
안녕하세요. 감자선생님!메모리(+가상메모리)관련 질문있습니다. Q1.메모리 할당방식 0:10 ~ 0:301) "당장 실행시켜야할 부분"이라면, Code영역 Data영역 데이터들로 추측되는데 대략적으로 맞을까요?2) 해당 예시는 총 메모리보다 프로그램 크기가 큰 경우, 메모리오버레이 적용으로 이해했습니다.그 반대의 상황 메모리(2GB) 게임(1GB)에서도 오버레이 적용 되는지 궁금합니다.예상으로는 반대상황에서도 게임 실행 시, 1GB가아닌 훨씬 작은 메모리만 사용할것으로 추측중입니다. Q2.가상메모리개요 1:451) 보라색 캐릭터(프로세스)의 데이터(Code,Data,Stack,Heap)들은실제 형태는 RAM or ROM-스왑영역에 올라가 있는 상황으로 이해했습니다. 맞는지 궁금합니다. Q3.디멘드페이징 0:25메모리 Code 영역에는 작성한 코드가 기계어로 들어가있습니다.1)저가 만약 5만줄의 코드를 작성하면, 5만줄에 해당하는 기계어 전체가 다 들어가있는 건지 궁금합니다.2)Code영역에 비즈니스로직(프로그램의 시작과 끝 로직)도 'Ram과 Rom으로 나뉘어져 실행되는 구조인지 궁금합니다.ex)비즈니스로직에서- A번쨰 줄 로직 : int 변수에 5를 더하기- 그다음 줄 로직 : 위 변수 출력이렇게 있는 상황에서 A번쨰줄 로직은 Ram에서 실행되고있고, 그 다음줄 로직은Rom에 있으면 안될것같은 느낌이 확 들어 질문드립니다.(그 다음줄을 Rom에서 불러올 방법이 없습니다)그렇게 되야 모든 로직이 실행되며 필요한 데이터는 Rom에서 불러오고 종료되고 할것같습니다. 이상입니다. 연휴잘보내세요!
-
미해결그림으로 쉽게 배우는 운영체제
파일할당 테이블
안녕하세요 파일 할당 시스템에서 파일을 삭제를 하면 헤더가 지워지고 그 지워진 블록은 지워진 블록끼리 연결을 해 메모리에 빈 공간이 어디있는지 스캔할 필요를 줄여주잖아요. 이때 데이터가 지워지는 게 아니라 헤더가 지워져서 나중에 포렌식 복구를 하여 데이터를 복구할 수 있다고 하셨는데, 그럼 새로운 데이터를 거기에 할당하게 될 경우는 어떻게 되는 건가요? 그 데이터만 남은 블록에 새 데이터가 할당되지 않은 부분만 포렌식 복구를 할 수 있는 건가요?
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
주소 지정 방식을 알아야 하는 이유가 궁금합니다.
소스 코드 -> 컴파일 -> 명령어 명령어 : 연산코드 + 오퍼랜드 이 오퍼랜드 필드에 데이터/주소/레지스터를 저장하는 방식 총 5가지 라고 이해했는데, 이 5가지 주소 지정 방식을 경우마다 다르게 쓸 수 있는건가요?언제 명시적으로 이걸 변경하거나 해야하는지 궁금합니다!프로그래밍 언어 자체랑은 관렴이 없고, 컴퓨터 내부 아키텍처 관점으로만 이해하면 되는걸까요?
-
미해결FreeRTOS 프로그래밍
하드 리얼타임에 대해서
안녕하세요 강사님! 이 강의에서 크리티컬 섹션을 만드는 것은 하드리얼타임에 악영향을 끼친다고 말씀하셨는데, 그럼 크리티컬 섹션으로 만드는 것보다는 세마포어로 상호배제하는 것이 하드리얼타임에 가까운 것인가요? 그렇다면 모든 상호배제는 세마포어로 하는 것이 이득일거라 생각되는데 크리티컬 섹션으로 만들어야하는 특별한 경우나 이유가 있을까요?