찾다
백엔드 개발C++OS 개발 (사실)

OS 개발 (사실)

Sep 19, 2024 pm 06:17 PM

OS Development (The truth)

목차

  • 소개
  • 1. 부트로더: 시작하기
  • 2. 커널 들어가기: 마법이 일어나는 곳
  • 3. 언어 선택
  • 4. 안전: 비행기를 추락시키지 마세요
  • 5. 속도 최적화
  • 6. 기본 드라이버 설정
    • 6.1 비디오 드라이버
    • 6.2 키보드 드라이버
    • 6.3 I/O 드라이버
  • 7. 쉘 작성: 사용자 인터페이스
  • 8. 맞춤형 파일 시스템 구축
  • 9. 마우스 드라이버 추가: 클릭하여 이동
  • 10. 간단한 GUI 구축
  • 11. 창 및 이벤트 처리
  • 12. 메모장 앱 만들기: 클릭부터 입력까지
  • 13. 최종 손질: 마치 OS처럼 느껴지게 만들기

소개

운영 체제를 처음부터 구축하는 것은 개발자로서 가질 수 있는 가장 도전적이고 보람 있는 경험 중 하나입니다. 거의 모든 것에 대한 라이브러리가 존재하는 높은 수준의 애플리케이션 개발과 달리 OS 개발에서는 하드웨어에 직접 접근하고, 메모리를 수동으로 관리하고, 기계 실행 방식의 모든 측면을 제어하면서 작업해야 합니다.

내 경험에 따르면 OS를 구축한다는 것은 어셈블리 언어에 깊이 빠져들고, 하드웨어와 씨름하고, 충돌, 재부팅(특히 재부팅) 및 긴 디버깅 세션을 겪는 것을 의미합니다. 부트로더 디버깅이 어렵다고 생각된다면, 고급스러운 최신 도구 없이 시도해 보십시오. OS 개발은 인생의 선택에 셀 수 없을 만큼 많은 질문을 던지게 만듭니다.

하지만 부트로더부터 마우스를 움직여 텍스트 편집기를 열어 입력할 수 있는 완전한 기능을 갖춘 데스크탑 환경까지 모두 분석해 보겠습니다.


1. 부트로더: 시작하기

부트로더란 무엇입니까?

부트로더는 모든 OS 개발 여정의 첫 번째 단계입니다. 컴퓨터가 켜지면 BIOS가 인계받아 하드웨어를 확인한 다음 부트로더를 디스크에서 메모리로 로드합니다. 이 작은 프로그램의 임무는 CPU를 준비하고 운영 체제의 커널을 메모리에 로드하는 것입니다. 이 단계에서는 하드웨어를 직접 다루기 때문에 부트로더를 어셈블리로 작성해야 합니다.

부트로더가 시작되면 CPU는 16비트 리얼 모드에 있으며 이는 1MB의 메모리만 주소 지정할 수 있음을 의미합니다. 가장 먼저 해야 할 일은 커널을 디스크에서 로드하여 메모리로 옮기는 것입니다. 그 후, 부트로더는 CPU를 32비트 보호 모드로 전환하는데, 여기서부터 재미가 시작됩니다. 모드를 전환하려면 GDT(전역 설명자 테이블)를 설정하여 메모리 세그먼트를 관리하고 CPU 제어 레지스터에서 PE(보호 활성화) 비트를 활성화해야 합니다. 이것이 잘못되면 시스템이 정지되거나 부팅 루프에 충돌하게 되는데, 이러한 상황은 제가 인정하고 싶은 것보다 더 자주 발생했습니다.

리얼 모드와 보호 모드

리얼 모드에서는 16비트 레지스터, 1MB 메모리 액세스, 메모리 보호 없음 등 모든 것이 매우 제한됩니다. 그렇기 때문에 보호 모드로 전환하는 것이 매우 중요합니다. 보호 모드에 들어가면 CPU는 32비트 레지스터, 더 큰 메모리 주소 지정, 멀티태스킹 및 페이징(가상 메모리)과 같은 고급 기능에 액세스할 수 있습니다. 부트로더는 이러한 전환이 원활하게 이루어지도록 도와줍니다.


2. 커널에 들어가기: 마법이 일어나는 곳

CPU가 보호 모드로 전환되면 부트로더는 제어권을 커널으로 넘깁니다. 커널은 운영 체제의 핵심이며 하드웨어, 메모리, 프로세스, 시스템 리소스 등 모든 것을 관리하는 역할을 합니다.

커널이 시작되면 몇 가지 중요한 시스템을 설정해야 합니다.

  1. 페이징: 이는 OS가 각 프로세스에 고유한 가상 메모리 공간을 제공할 수 있도록 하는 메모리 관리 체계입니다. 그렇지 않으면 모든 프로세스가 동일한 메모리를 공유하게 되며 이는 재앙이 될 수 있습니다.
  2. 인터럽트 처리: 커널은 즉각적인 주의가 필요한 하드웨어(예: 키보드 또는 디스크 드라이브)의 신호인 인터럽트를 처리해야 합니다. 이렇게 하려면 인터럽트를 커널의 특정 핸들러 함수에 매핑하는 인터럽트 설명자 테이블(IDT)을 정의해야 합니다.
  3. 작업 스케줄링: 여러 프로세스를 실행하는 모든 OS에서 커널에는 CPU 시간을 관리하는 방법이 필요합니다. 스케줄러는 어떤 프로세스가 CPU 시간을 확보할지, 언제 확보할지 결정하여 시스템의 반응성과 효율성을 보장합니다.

커널 구축은 길고 복잡한 작업이지만 가장 보람 있는 작업 중 하나이기도 합니다. 여기에서 운영 체제의 내부 작동 방식을 확인하고 기계 작동 방식에 대한 모든 세부 사항을 제어할 수 있습니다.


3. 언어 선택

OS를 구축할 때는 각 작업에 적합한 프로그래밍 언어를 선택해야 합니다. 부트로더는 하드웨어를 직접 제어해야 하기 때문에 일반적으로 어셈블리로 작성됩니다. 그러나 일단 보호 모드에서 커널 작업을 하고 나면 대부분의 개발자는 C로 전환합니다. 왜냐하면 모든 것을 어셈블리로 작성해야 하는 번거로움 없이 낮은 수준의 제어를 제공하기 때문입니다.

일부 개발자는 복잡한 시스템을 더 쉽게 관리할 수 있는 객체 지향 기능을 제공하는 C 를 커널 개발에 사용합니다. 그러나 C에는 추가 오버헤드가 발생하며 C의 메모리 관리는 OS 환경에서 더 까다로울 수 있습니다. C는 시스템 프로그래밍에 필요한 강력한 기능과 단순성을 제공합니다.


4. 안전: 비행기를 추락시키지 마세요

OS 개발에서는 안전이 중요합니다. 충돌이 단지 오류 메시지나 앱 종료를 의미할 수 있는 고급 프로그래밍과 달리, OS 개발에서 충돌은 일반적으로 전체 시스템 재부팅을 의미합니다. 메모리를 직접 사용하여 작업하게 됩니다. 즉, 메모리 관리를 망칠 경우 시스템 데이터가 손상되거나 중요한 구조를 덮어쓰거나 커널 패닉이 발생할 수 있습니다.

커널은 한 프로세스가 다른 프로세스의 메모리를 덮어쓰는 것을 방지하기 위해 메모리 보호를 구현해야 합니다. 이는 각 프로세스를 자체 가상 메모리 공간에 매핑하는 페이징을 사용하여 수행됩니다. 이것을 잘못하면 전체 시스템이 불안정해지고 며칠 동안 메모리 버그를 추적해야 합니다. 저를 믿으세요. 저는 거기에 가봤습니다.


5. 속도 최적화

속도는 OS의 반응성을 높이는 핵심 요소입니다. 느린 커널은 느린 시스템을 의미하므로 성능 최적화가 중요합니다. 속도가 중요한 몇 가지 주요 영역은 다음과 같습니다.

  • 인터럽트 처리: 입력을 지속적으로 폴링하는 대신(CPU 사이클을 낭비함) 하드웨어 인터럽트를 설정해야 합니다. 이렇게 하면 CPU는 키 누르기 또는 네트워크 패킷 도착과 같은 실제 입력이 있을 때만 응답합니다.
  • 작업 스케줄링: 좋은 스케줄러는 프로세스 간에 CPU 시간의 균형을 효율적으로 조정하여 다른 프로세스가 굶어 죽는 동안 CPU 시간을 모두 잡아먹는 프로세스가 없도록 합니다. 라운드 로빈 또는 우선순위 기반 스케줄링
  • 과 같이 선택할 수 있는 다양한 스케줄링 알고리즘이 있습니다.
  • 지연 로딩: 모든 것을 한 번에 메모리에 로드하지 마세요. 실제로 사용되는 프로그램의 일부만 메모리에 로드되는 요구 페이징을 구현하세요. 이렇게 하면 메모리를 절약하고 시스템 성능을 높이는 데 도움이 됩니다.

6. 기본 드라이버 설정

이제 커널이 실행되었으므로 하드웨어와 상호 작용할 드라이버를 빌드할 차례입니다. 드라이버는 OS와 하드웨어 사이의 다리 역할을 하며 OS가 키보드, 디스플레이, 디스크 드라이브와 통신할 수 있도록 해줍니다.

6.1 비디오 드라이버

처음에는 OS가 비디오 메모리(보통 주소 0xB8000)에 직접 문자를 인쇄하는 텍스트 모드에서 시작될 것입니다. 디버깅 및 기본 출력에는 괜찮지만 결국에는 그래픽 사용자 인터페이스(GUI)로 이동하고 싶을 것입니다. 이를 위해서는 픽셀 수준 제어, 화면 해상도 및 색 농도를 관리할 수 있는 비디오 드라이버가 필요합니다.

비디오 드라이버 설정은 그래픽 OS를 만드는 데 있어 큰 진전이지만, 디스플레이 하드웨어 작동 방식을 이해하고 각 프레임에 대해 많은 양의 데이터를 관리해야 하기 때문에 더 복잡한 작업 중 하나이기도 합니다.

6.2 키보드 드라이버

키보드 드라이버는 대화형 OS에서 가장 중요한 부분 중 하나입니다. 키를 누르면 키보드는 스캔코드를 CPU로 보냅니다. 키보드 드라이버의 임무는 해당 스캔코드를 OS가 이해할 수 있는 문자나 동작으로 변환하는 것입니다. 여기에는 키보드가 생성하는 하드웨어 인터럽트인 IRQ1에 대한 인터럽트 핸들러를 설정하는 작업이 포함됩니다.

키보드 드라이버가 작동하게 되면 더 복잡한 사용자 인터페이스 구축을 시작하고 사용자 입력을 받아 명령을 처리할 수 있습니다.

6.3 I/O 드라이버

I/O 드라이버는 OS가 디스크를 읽고 쓸 수 있도록 해줍니다. 이는 프로그램 로드, 파일 저장, 데이터 저장과 같은 작업에 매우 중요합니다. 처음에는 BIOS 인터럽트를 사용하여 디스크와 상호 작용할 것이지만 OS가 성숙해짐에 따라 더 많은 인터럽트를 사용하고 싶을 것입니다.

디스크 컨트롤러와 직접 통신하는 등 BIOS에 의존하지 않는 고급 I/O 방법


7. 셸 작성: 사용자 인터페이스

기본 드라이버가 작동하고 나면 이제 사용자가 OS와 상호 작용할 수 있는 명령줄 인터페이스(CLI)인 을 구축할 차례입니다. 셸은 사용자가 명령을 입력하고, 프로그램을 실행하고, 파일 시스템과 상호 작용할 수 있는 곳입니다.

셸 구현은 OS가 실제로 대화형을 느끼기 시작하는 첫 번째 장소 중 하나이기 때문에 흥미로운 단계입니다. 키보드를 통한 사용자 입력을 처리하고, 명령을 처리하고, 프로그램을 실행해야 합니다. 이는 또한 프로세스를 효율적으로 멀티태스킹하고 관리하는 커널 능력의 중요성을 깨닫기 시작하는 지점이기도 합니다.


8. 사용자 정의 파일 시스템 구축

파일 시스템은 OS가 디스크에 데이터를 저장하고 검색할 수 있도록 해줍니다. 기존 파일 시스템(예: FAT 또는 ext4)을 사용할 수도 있지만 자신만의 사용자 정의 파일 시스템을 구축하면 더 많은 제어력을 제공하고 재미있는 도전이 될 수 있습니다.

기본 파일 시스템은 다음을 충족해야 합니다.

  • 새 파일을 위한 디스크 공간을 할당
  • 파일 이름, 파일 크기 및 메타데이터를 추적하세요.
  • 파일을 효율적으로 읽고 쓸 수 있습니다.

OS가 성장함에 따라 다음과 같은 고급 기능도 처리해야 합니다.

  • 디렉터리: 파일을 계층 구조로 정리합니다.
  • 권한: 파일을 읽고, 쓰고, 실행할 수 있는 사람을 제어합니다.
  • 조각화: 디스크의 여러 영역에 걸쳐 분할되는 파일을 처리합니다.

파일 시스템을 설계하는 것은 성능, 안정성, 사용 편의성의 균형을 유지해야 하기 때문에 까다롭습니다. 잘못 설계된 파일 시스템은 데이터 손상, 성능 저하 또는 디스크 공간 낭비로 이어질 수 있습니다.


9. 마우스 드라이버 추가: 클릭하여 이동

이제 OS에 CLI가 있고 키보드 입력을 처리할 수 있으므로 마우스 지원을 추가할 차례입니다. 마우스 드라이버는 마우스의 움직임을 추적하고 이를 커서 이동이나 버튼 클릭과 같은 화면상의 동작으로 변환하는 역할을 담당합니다.

마우스 드라이버를 구축하려면 마우스에서 발생하는 하드웨어 인터럽트인 IRQ12를 처리하고 이동 데이터를 처리해야 합니다. 마우스 드라이버가 설치되면 그래픽 사용자 인터페이스(GUI) 구축에 대해 생각해 볼 수 있습니다.


10. 간단한 GUI 구축

그래픽 사용자 인터페이스(GUI)는 OS를 명령줄 인터페이스에서 최신 데스크탑 환경에 더 가까운 모습과 느낌으로 바꿔줍니다. 이 단계에서는 사용자가 마우스로 클릭할 수 있는 창, 버튼, 메뉴 및 기타 대화형 요소를 구축해야 합니다.

GUI 생성에는 그래픽 렌더링(창 및 아이콘 그리기) 관리, 입력 이벤트(클릭, 키 누르기 등) 처리, 여러 창과 키 누르기 등을 관리하는 시스템 구현이 포함됩니다. 응용 프로그램입니다.

처음에는 GUI가 매우 기본적일 수 있습니다. 사용자가 상호 작용할 수 있는 단일 창일 뿐입니다. 그러나 OS가 성숙해짐에 따라 창 크기 조정, 드래그 앤 드롭 기능, 애니메이션과 같은 고급 기능을 추가하고 싶을 것입니다.


11. 창 및 이벤트 처리

GUI의 기본 사항을 마련했다면 다음 단계는 창 및 이벤트 관리 시스템을 구축하는 것입니다. 여기에는 여러 창을 동시에 처리하는 작업이 포함됩니다. 각 창은 잠재적으로 서로 다른 애플리케이션을 실행하며 각 창이 올바른 입력 이벤트(예: 마우스 클릭 또는 키보드 누르기)를 수신하는지 확인합니다.

또한 창 z 순서(창이 맨 위에 있음), 최소화/최대화드래그를 구현해야 합니다. 이제 전통적인 데스크톱 환경과 같은 느낌이 들기 시작합니다.


12. 메모장 앱 만들기: 클릭부터 입력까지

GUI를 더욱 기능적으로 만들려면 메모장 앱과 같은 기본 애플리케이션을 구축해야 합니다. 메모장 앱은 사용자가 파일을 입력, 편집, 저장할 수 있는 간단한 텍스트 편집기입니다. 이와 같은 앱을 구축하려면 다음이 필요합니다.

  • 키보드에서 텍스트 입력을 처리합니다.
  • 텍스트를 화면에 렌더링합니다.
  • 열기, 저장, 닫기 등 기본 파일 작업을 허용합니다.

이것은 GUI, 파일 시스템 및 입력 처리가 모두 여기에 적용되므로 모든 것을 하나로 모으는 훌륭한 연습입니다. 메모장 앱이 작동하게 되면 완벽하게 작동하는 OS의 기본 사항을 갖추게 됩니다.


13. 최종 손질: OS처럼 느껴지도록 만들기

이 시점에서는 OS가 작동하지만 더 세련된 느낌을 주는 세부 사항은 항상 거의 없습니다. 다음과 같은 것:

  • 사용자 계정 및 권한: 여러 사용자가 자신의 설정과 파일을 가질 수 있도록 허용합니다.
  • 네트워킹: OS가 인터넷에 연결할 수 있도록 TCP/IP에 대한 지원을 추가합니다.
  • 시스템 호출: 애플리케이션이 커널과 상호 작용하는 데 사용할 수 있는 인터페이스를 만듭니다.

추가하는 작은 세부 사항 하나하나가 OS를 완전한 시스템처럼 느끼게 해줍니다. 길고 어려운 과정이지만 결국에는 정말 독특한 것, 즉 처음부터 새로 구축된 운영 체제를 만들게 될 것입니다.

위 내용은 OS 개발 (사실)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
C 커뮤니티 : 자원, 지원 및 개발C 커뮤니티 : 자원, 지원 및 개발Apr 13, 2025 am 12:01 AM

C 학습자와 개발자는 StackoverFlow, Reddit의 R/CPP 커뮤니티, Coursera 및 EDX 코스, GitHub의 오픈 소스 프로젝트, 전문 컨설팅 서비스 및 CPPCon에서 리소스와 지원을받을 수 있습니다. 1. StackoverFlow는 기술적 인 질문에 대한 답변을 제공합니다. 2. Reddit의 R/CPP 커뮤니티는 최신 뉴스를 공유합니다. 3. Coursera와 Edx는 공식적인 C 과정을 제공합니다. 4. LLVM 및 부스트 기술 향상과 같은 GitHub의 오픈 소스 프로젝트; 5. JetBrains 및 Perforce와 같은 전문 컨설팅 서비스는 기술 지원을 제공합니다. 6. CPPCON 및 기타 회의는 경력을 돕습니다

C# vs. C : 각 언어가 탁월한 곳C# vs. C : 각 언어가 탁월한 곳Apr 12, 2025 am 12:08 AM

C#은 높은 개발 효율성과 크로스 플랫폼 지원이 필요한 프로젝트에 적합한 반면 C#은 고성능 및 기본 제어가 필요한 응용 프로그램에 적합합니다. 1) C#은 개발을 단순화하고, 쓰레기 수집 및 리치 클래스 라이브러리를 제공하며, 엔터프라이즈 레벨 애플리케이션에 적합합니다. 2) C는 게임 개발 및 고성능 컴퓨팅에 적합한 직접 메모리 작동을 허용합니다.

C의 지속적인 사용 : 지구력의 이유C의 지속적인 사용 : 지구력의 이유Apr 11, 2025 am 12:02 AM

C 지속적인 사용 이유에는 고성능, 광범위한 응용 및 진화 특성이 포함됩니다. 1) 고효율 성능 : C는 메모리 및 하드웨어를 직접 조작하여 시스템 프로그래밍 및 고성능 컴퓨팅에서 훌륭하게 수행합니다. 2) 널리 사용 : 게임 개발, 임베디드 시스템 등의 분야에서의 빛나기.

C 및 XML의 미래 : 신흥 동향 및 기술C 및 XML의 미래 : 신흥 동향 및 기술Apr 10, 2025 am 09:28 AM

C 및 XML의 미래 개발 동향은 다음과 같습니다. 1) C는 프로그래밍 효율성 및 보안을 개선하기 위해 C 20 및 C 23 표준을 통해 모듈, 개념 및 코 루틴과 같은 새로운 기능을 소개합니다. 2) XML은 데이터 교환 및 구성 파일에서 중요한 위치를 계속 차지하지만 JSON 및 YAML의 문제에 직면하게 될 것이며 XMLSCHEMA1.1 및 XPATH 3.1의 개선과 같이보다 간결하고 쉽게 구문 분석하는 방향으로 발전 할 것입니다.

현대 C 디자인 패턴 : 확장 가능하고 유지 관리 가능한 소프트웨어 구축현대 C 디자인 패턴 : 확장 가능하고 유지 관리 가능한 소프트웨어 구축Apr 09, 2025 am 12:06 AM

최신 C 설계 모델은 C 11 이상의 새로운 기능을 사용하여보다 유연하고 효율적인 소프트웨어를 구축 할 수 있습니다. 1) Lambda Expressions 및 STD :: 함수를 사용하여 관찰자 패턴을 단순화하십시오. 2) 모바일 의미와 완벽한 전달을 통해 성능을 최적화하십시오. 3) 지능형 포인터는 유형 안전 및 자원 관리를 보장합니다.

C 다중 스레딩 및 동시성 : 병렬 프로그래밍 마스터 링C 다중 스레딩 및 동시성 : 병렬 프로그래밍 마스터 링Apr 08, 2025 am 12:10 AM

C 멀티 스레딩 및 동시 프로그래밍의 핵심 개념에는 스레드 생성 및 관리, 동기화 및 상호 제외, 조건부 변수, 스레드 풀링, 비동기 프로그래밍, 일반적인 오류 및 디버깅 기술, 성능 최적화 및 모범 사례가 포함됩니다. 1) std :: 스레드 클래스를 사용하여 스레드를 만듭니다. 예제는 스레드가 완성 될 때까지 생성하고 기다리는 방법을 보여줍니다. 2) std :: mutex 및 std :: lock_guard를 사용하여 공유 리소스를 보호하고 데이터 경쟁을 피하기 위해 동기화 및 상호 배제. 3) 조건 변수는 std :: 조건 _variable을 통한 스레드 간의 통신과 동기화를 실현합니다. 4) 스레드 풀 예제는 ThreadPool 클래스를 사용하여 효율성을 향상시키기 위해 작업을 병렬로 처리하는 방법을 보여줍니다. 5) 비동기 프로그래밍은 std :: as를 사용합니다

C Deep Dive : 메모리 관리, 포인터 및 템플릿 마스터 링C Deep Dive : 메모리 관리, 포인터 및 템플릿 마스터 링Apr 07, 2025 am 12:11 AM

C의 메모리 관리, 포인터 및 템플릿은 핵심 기능입니다. 1. 메모리 관리는 새롭고 삭제를 통해 메모리를 수동으로 할당하고 릴리스하며 힙과 스택의 차이에주의를 기울입니다. 2. 포인터는 메모리 주소를 직접 작동시키고주의해서 사용할 수 있습니다. 스마트 포인터는 관리를 단순화 할 수 있습니다. 3. 템플릿은 일반적인 프로그래밍을 구현하고 코드 재사용 성과 유연성을 향상 시키며 유형 파생 및 전문화를 이해해야합니다.

C 및 시스템 프로그래밍 : 저수준 제어 및 하드웨어 상호 작용C 및 시스템 프로그래밍 : 저수준 제어 및 하드웨어 상호 작용Apr 06, 2025 am 12:06 AM

C는 시스템 프로그래밍 및 하드웨어 상호 작용에 적합합니다. 하드웨어에 가까운 제어 기능 및 객체 지향 프로그래밍의 강력한 기능을 제공하기 때문입니다. 1) C는 포인터, 메모리 관리 및 비트 운영과 같은 저수준 기능을 통해 효율적인 시스템 수준 작동을 달성 할 수 있습니다. 2) 하드웨어 상호 작용은 장치 드라이버를 통해 구현되며 C는 이러한 드라이버를 작성하여 하드웨어 장치와의 통신을 처리 할 수 ​​있습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)