혼란스러운 질문에 대해 죄송합니다. 포인터를 찾고 있습니다.
지금까지는 애플리케이션 계층에서 Java 및 Python으로 주로 작업 해 왔으며 운영 체제 및 하드웨어에 대한 모호한 이해가 있습니다. 저수준의 컴퓨팅에 대해 훨씬 더 이해하고 싶지만 실제로는 다소 압도적입니다. 대학에서 저는 마이크로 프로그래밍에 관한 수업을 들었습니다. 즉, 프로세서가 어떻게 ASM 코드를 구현하기 위해 배선되어 있는지에 대한 수업을 들었습니다. 지금까지 나는 항상 "낮은 수준"에 대해 더 많이 배우면 더 이상 끝나지 않을 것이라고 생각했습니다.
내가 가진 한 가지 질문은 하드웨어가 개발자로부터 거의 완전히 숨겨지는 것이 어떻게 가능합니까? 운영 체제가 하드웨어의 소프트웨어 계층이라고 말하는 것이 정확합니까? 하나의 작은 예 : 프로그래밍에서 L2 또는 L3 캐시가 무엇인지 이해해야 할 필요성을 결코 겪지 않았습니다. 일반적인 비즈니스 응용 프로그램 환경의 경우 오늘날 거의 모든 기술 스택이 있기 때문에 어셈블러와 더 낮은 수준의 컴퓨팅을 이해할 필요가 거의 없습니다. 이 낮은 수준의 요점은 더 높은 수준의 인터페이스를 제공하는 것입니다. 다른 한편으로, 나는이 전체 그래픽 컴퓨팅과 같이 하위 레벨이 얼마나 많은 영향을 미칠 수 있는지 궁금합니다.
다른 한편으로,이 이론적 인 컴퓨터 과학 브랜치는 추상 컴퓨팅 모델에서 작동합니다. 그러나 나는 복잡성 모델, 증명 검증 등의 범주에서 도움이되는 생각을 거의 얻지 못했습니다. NP라고하는 복잡성 클래스가 있으며 해결할 수 없다는 것을 알고 있습니다 내가 놓친 것은 이러한 것들에 대해 생각할 프레임 워크에 대한 참조입니다. 거의 상호 작용하지 않는 모든 종류의 다른 캠프가있는 것 같습니다.
지난 몇 주 동안 보안 문제에 대해 읽었습니다. 여하튼, 많은 다른 층들이 모입니다. 공격과 악용은 거의 항상 하위 수준에서 발생하므로이 경우 OSI 계층의 세부 사항, OS의 내부 작동 등에 대해 알아야합니다.