Цель этого курса - помочь вам понять операционную систему, одно из самых важных программных обеспечений, с которым взаимодействуют почти все программы.
Каждый модуль охватывает как концептуальные основы, так и практические аспекты для инженеров-программистов. Вы будете писать небольшие программы и анализировать: «Как операционная система делает это? Как мои знания объясняют поведение программы?» По завершении каждого модуля вы будете лучше понимать операционные системы и откроете новые способы сделать программы более эффективными и безопасными.
Основой курса являются задачи по каждой теме. Мы рекомендуем решать их самостоятельно, используя готовые решения и дополнительные объяснения при необходимости. Хотя учебник не обязателен, мы настоятельно рекомендуем «Operating Systems: Three Easy Pieces» («OSTEP») как дополнение, и указываем главы для чтения параллельно с задачами. Также предлагаем дополнительные ресурсы из книги «Computer Systems: A Programmer's Perspective», если у вас есть её копия, а также другие полезные материалы.
Большинство тем, которые мы обсуждаем, применимы ко всем операционным системам, но, где это необходимо, мы сосредоточимся на операционных системах семейства Unix, в частности, через призму GNU/Linux, которую мы рекомендуем запускать при необходимости как виртуальную машину.
Важно: мы настоятельно рекомендуем пройти курс по компьютерным системам или его эквивалент до этого курса. Многие темы, такие как базовая архитектура компьютера и знание языка C, считаются основными.
Посмотреть больше
Это пробный урок. Оформите подписку, чтобы получить доступ ко всем материалам курса. Премиум
Ограничение времени просмотра
Вы можете просматривать пробный урок только 10 минут. Получите полный доступ, чтобы смотреть без ограничений.
004 An introduction to operating systems exploring syscalls as the interface
Урок 5.
00:07:28
005 What happens during a context switch
Урок 6.
00:09:01
006 Learning how to better use man pages
Урок 7.
00:17:04
007 A brief introduction to strace and ltrace
Урок 8.
00:04:42
008 The motivation for address space layout randomization
Урок 9.
00:05:06
009 What is POSIX compliance
Урок 10.
00:04:20
010 What exactly is the kernel
Урок 11.
00:06:20
011 What exactly is a syscall and how is it not a C stdlib function
Урок 12.
00:05:47
012 Why time-sharing operating systems were such a big deal
Урок 13.
00:06:49
013 Pre-emptive multitasking and the timer interrupt
Урок 14.
00:05:44
014 What is the stack (simple explanation)
Урок 15.
00:07:35
015 The early history of Unix
Урок 16.
00:12:40
016 A brief overview of the flavors of Unix (ie why your grep may be different to mine)
Урок 17.
00:16:22
017 What is the stack (detailed explanation)
Урок 18.
00:33:31
018 Signalbox
Урок 19.
01:09:07
019 Signal logger
Урок 20.
00:57:33
020 Custom shell basic execution
Урок 21.
01:06:30
021 Custom shell pipes
Урок 22.
01:39:47
022 Custom shell job control
Урок 23.
01:16:20
023 Exploring the process lifecycle
Урок 24.
00:04:48
024 Pipelines dont execute sequentially
Урок 25.
00:10:05
025 Fork details COW and vfork
Урок 26.
00:03:49
026 What exactly is a process
Урок 27.
00:11:09
027 Details of using pipes.mp4
Урок 28.
00:17:43
028 Exploring processes by considering ps output
Урок 29.
00:12:20
029 What is a signal
Урок 30.
00:13:15
030 Understanding process groups and sessions
Урок 31.
00:10:48
031 IO multiplexing select poll epoll and kqueue
Урок 32.
00:22:07
032 Is everything a file in Unix
Урок 33.
00:13:02
033 Brief overview of the process lifecycle
Урок 34.
00:05:00
034 Foreground and background process groups
Урок 35.
00:21:55
035 Internal representations of a process in Unix V6 and Linux
Урок 36.
00:18:10
036 Threaded counter
Урок 37.
00:58:25
037 Multi-threaded mergesort
Урок 38.
00:25:18
038 Multi-threaded fizzbuzz
Урок 39.
01:09:22
039 Ring buffer
Урок 40.
00:38:12
040 The motivation for threads contrasted with IO multiplexing
Урок 41.
00:54:49
041 What is a good scheduling policy
Урок 42.
00:14:45
042 Understanding race conditions
Урок 43.
00:04:40
043 Starting and waiting on POSIX threads
Урок 44.
00:18:23
044 Processes threads and lightweight threads
Урок 45.
00:17:40
045 Basic mmap
Урок 46.
00:54:05
046 Shared memory stream
Урок 47.
01:26:52
047 Custom malloc
Урок 48.
00:38:20
048 The historical context for todays virtual memory system
Урок 49.
00:11:29
049 What is swap memory and is it a good idea
Урок 50.
00:02:53
050 The basic idea behind paging
Урок 51.
00:12:42
051 Copy-on-write zero-on-demand and other virtual memory tricks
Урок 52.
00:18:28
052 The motivation for multi-level page tables
Урок 53.
00:24:01
053 An overview of the mmap system call
Урок 54.
00:11:28
054 Why you probably shouldnt use the default 4KiB page size
Урок 55.
00:13:30
055 A detailed view of Intels multi-level page tables
Урок 56.
00:36:40
056 Custom ls
Урок 57.
00:22:13
057 Mystery file
Урок 58.
01:01:32
058 Custom file system
Урок 59.
00:06:05
059 Whats the big idea behind file systems
Урок 60.
00:08:19
060 Some virtual files and file systems
Урок 61.
00:23:41
061 Sketching out a basic file system design
Урок 62.
00:10:07
062 What is an inode
Урок 63.
00:28:56
063 Container chroot
Урок 64.
01:02:00
064 Container namespaces
Урок 65.
00:32:36
065 Container cgroups
Урок 66.
00:27:16
066 Container extras
Автор - Oz Nova (csprimer.com)
Oz Nova (csprimer.com)
Привет, меня зовут Оз. Я преподаватель компьютерных наук и отец, обучающий своих детей на дому, живу в сельской местности Австралии. С 2015 года я управляю Bradfield, небольшой профессиональной школой, которая изначально была расположена в Сан-Франциско, а теперь полностью онлайн. Начиная с 2024 года, я сосредотачиваю свою энергию на csprimer.com - учебной программе по компьютерным наукам с гибким графиком. Ранее я работал инженером-программистом
Команда внимательно читает ваши комментарии и оперативно на них реагирует. Вы можете спокойно оставлять запросы на обновления или задавать любые вопросы о курсе здесь.
Операционные системы, часть 3: синхронизация и тупик (Deadlock)
Operating Systems Part 3 : Synchronization and Deadlock
Добро пожаловать на курс Операционные системы. Часть 3. Синхронизация и тупик. Освоение концепций операционных систем очень важно для начала работы с компьютерными науками, поскольку операционная система - это программа, которая отвечает за простоту использования компьютеров сегодня для решения наших проблем путем написания таких прикладных программ, как Google Chrome.
Как инженеры-программисты, мы изучаем компьютерные системы (или архитектуру компьютера), чтобы понять, как в конечном итоге работают наши программы и как машина ожидает, что наши данные будут закодированы. Непосредственное преимущество - возможность писать более быстрый, эффективный и безопасный код.В долгосрочной перспективе понимание компьютерных систем дает еще больше пользы. Каждая абстракция между нами и оборудованием проявляет утечки. Этот