# Scheduling In Go : Part I - OS Scheduler

DevFeed: [Scheduling In Go : Part I - OS Scheduler](<https://devfeed.tech/articles/scheduling-in-go-part-i-os-scheduler-22137.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part1.html>)

Published: 2025-03-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Operating system](<https://devfeed.tech/topics/operating-system.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>)

Tags: [ardan-labs](<https://devfeed.tech/tags/ardan-labs.md>), [blog](<https://devfeed.tech/tags/blog.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [fundamentals](<https://devfeed.tech/tags/fundamentals.md>), [go](<https://devfeed.tech/tags/go.md>), [go-programming](<https://devfeed.tech/tags/go-programming.md>), [golang](<https://devfeed.tech/tags/golang.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [numa](<https://devfeed.tech/tags/numa.md>), [os](<https://devfeed.tech/tags/os.md>), [programming](<https://devfeed.tech/tags/programming.md>)

## AI overview

This first article in a three-part series explains operating-system scheduling as a foundation for understanding Go's scheduler. It discusses how schedulers interact with multithreaded Go programs and introduces hardware considerations such as processors, CPU caches, and NUMA.

## Source excerpt

Although this blogpost was originally published in 2018, the concepts and principles discussed remain crucial for building efficient and performant multithreaded applications in Go now in 2025 (Go 1.24.0). As the Go ecosystem continues to evolve, understanding how the Go scheduler interacts with the operating system scheduler is more important than ever. This three-part series provides a comprehensive overview of the mechanics and semantics behind Go's scheduling, starting with the fundamentals of the operating system scheduler.