Đề cương khóa học

Giới thiệu

  • Mục tiêu
  • Bạn là ai?
  • Tổ chức Linux Foundation
  • Khóa học của Linux Foundation
  • Chương trình chứng chỉ và huy hiệu kỹ thuật số
  • Các bản phân phối Linux
  • Nền tảng
  • Chuẩn bị hệ thống của bạn
  • Sử dụng và tải xuống máy ảo
  • Các thay đổi trong Linux

Tiểu phẩm

  • Quy trình
  • Tiêu chuẩn và LSB

Cách làm việc trong các dự án OSS **

  • Tổng quan về cách đóng góp đúng cách
  • Duy trì gần với mã chính để đảm bảo an ninh và chất lượng
  • Nghiên cứu và hiểu DNA của dự án
  • Xác định vấn đề bạn muốn giải quyết
  • Định danh các quản trị viên và phương pháp làm việc của họ
  • Lấy ý kiến sớm và làm việc công khai
  • Đóng góp từng phần nhỏ, không phải một lượng lớn mã
  • Bỏ qua tự ái: Đừng dễ bị tổn thương
  • Nhẫn nại, xây dựng mối quan hệ lâu dài, và sẵn lòng giúp đỡ

Biên dịch viên

  • GCC
  • Các trình biên dịch khác
  • Các tùy chọn gcc chính
  • Trình tiền xử lý
  • Môi trường phát triển tích hợp (IDE)
  • Bài thực hành

Thư viện

  • Thư viện tĩnh
  • Thư viện chia sẻ
  • Kết nối với thư viện
  • Tải trình động liên kết
  • Bài thực hành

Make

  • Sử dụng make và Makefiles
  • Xây dựng dự án lớn
  • Các quy tắc phức tạp hơn
  • Các quy tắc mặc định
  • Bài thực hành

Quản lý mã nguồn

  • Quản lý mã nguồn
  • RCS và CVS
  • Subversion
  • git
  • Bài thực hành

Gỡ lỗi và các tệp core dump

  • gdb
  • Các tệp core dump là gì?
  • Sản xuất core dumps
  • Xem xét core dumps
  • Bài thực hành

Công cụ gỡ lỗi

  • Lấy thời gian
  • Phân tích và hiệu suất
  • valgrind
  • Bài thực hành

Hàm gọi hệ thống

  • Hàm gọi hệ thống so với hàm thư viện
  • Cách tạo các hàm gọi hệ thống
  • Giá trị trả về và mã lỗi
  • Bài thực hành

Quản lý bộ nhớ và phân bổ

  • Quản lý bộ nhớ
  • Phân bổ động
  • Tối ưu hóa malloc()
  • Gắn trang vào bộ nhớ
  • Bài thực hành

Tệp và hệ thống tệp trong Linux **

  • Tệp, thư mục và thiết bị
  • Hệ thống tệp ảo
  • Hệ thống tệp ext2/ext3
  • Hệ thống tệp ghi nhật ký
  • Hệ thống tệp ext4/
  • Bài thực hành

Đọc/ghi tệp

  • Đọc/ghi tệp trong UNIX
  • Mở và đóng tệp
  • Đọc, ghi và tìm kiếm
  • Đọc/ghi vị trí và vectơ
  • Thư viện I/O chuẩn
  • Hỗ trợ tệp lớn (LFS)
  • Bài thực hành

Các thao tác tệp nâng cao

  • Các hàm stat
  • Các hàm thư mục
  • inotify
  • Gắn bộ nhớ
  • flock() và fcntl()
  • Tạo các tệp tạm thời
  • Các hàm gọi hệ thống khác
  • Bài thực hành

Quy trình I

  • Quy trình là gì?
  • Hạn chế quy trình
  • Nhóm quy trình
  • Hệ thống tệp proc
  • Các phương pháp giao tiếp giữa quy trình
  • Bài thực hành

Quy trình II

  • Sử dụng system() để tạo quy trình
  • Sử dụng fork() để tạo quy trình
  • Sử dụng exec() để tạo quy trình
  • Sử dụng clone()
  • Kết thúc
  • Hàm khởi tạo và hàm hủy
  • Chờ đợi
  • Các quy trình deamon
  • Bài thực hành

Ống dẫn (Pipes) và ống dẫn đặt tên (Fifos)

  • Ống dẫn và giao tiếp giữa quy trình
  • popen() và pclose()
  • pipe()
  • Các ống dẫn đặt tên (FIFOs)
  • splice(), vmsplice() và tee()
  • Bài thực hành

I/O không đồng bộ **

  • I/O không đồng bộ là gì?
  • API I/O không đồng bộ POSIX
  • Triển khai trong Linux
  • Bài thực hành

Tín hiệu I

  • Tín hiệu là gì?
  • Các tín hiệu có sẵn
  • Gửi tín hiệu
  • Đặt thời gian, tạm dừng và ngủ
  • Thiết lập trình xử lý tín hiệu
  • Các tập hợp tín hiệu
  • sigaction()
  • Bài thực hành

Tín hiệu II

  • Các hàm xử lý tín hiệu và tính tái nhập
  • Nhảy và trả về không địa phương
  • siginfo và sigqueue()
  • Các tín hiệu thời gian thực
  • Bài thực hành

Lũy thừa POSIX I

  • Lập trình đa luồng dưới Linux
  • Cấu trúc chương trình cơ bản
  • Tạo và hủy các luồng
  • Tín hiệu và luồng
  • Forking so với threading
  • Bài thực hành

Lũy thừa POSIX II

  • Điểm chết và điều kiện đua
  • Các thao tác mutex
  • Semaphore
  • Futexes
  • Các thao tác điều kiện
  • Bài thực hành

Mạng lưới và socket

  • Các lớp mạng
  • Socket là gì?
  • Socket stream
  • Socket datagram
  • Socket thô
  • Xếp hạng byte
  • Bài thực hành

Địa chỉ và máy chủ của socket

  • Cấu trúc địa chỉ socket
  • Chuyển đổi địa chỉ IP
  • Thông tin máy chủ
  • Bài thực hành

Cổng và giao thức của socket

  • Thông tin cổng dịch vụ
  • Thông tin giao thức
  • Bài thực hành

Máy khách của socket

  • Danh sách cơ bản cho máy khách
  • socket()
  • connect()
  • close() và shutdown()
  • Máy khách UNIX
  • Máy khách Internet
  • Bài thực hành

Máy chủ của socket

  • Danh sách cơ bản cho máy chủ
  • bind()
  • listen()
  • accept()
  • Máy chủ UNIX
  • Máy chủ Internet
  • Bài thực hành

Các thao tác I/O của socket

  • write(), read()
  • send(), recv()
  • sendto(), recvfrom()
  • sendmsg(), recvmsg()
  • sendfile()
  • socketpair()
  • Bài thực hành

Các tùy chọn của socket

  • Lấy và đặt các tùy chọn socket
  • fcntl()
  • ioctl()
  • getsockopt() và setsockopt()
  • Bài thực hành

Socket netlink **

  • Socket netlink là gì?
  • Mở socket netlink
  • Các thông điệp netlink
  • Bài thực hành

Multiplexing và máy chủ đồng thời của socket

  • I/O multiplexed và không đồng bộ của socket
  • select()
  • poll()
  • pselect() và ppoll()
  • epoll
  • I/O tín hiệu và không đồng bộ
  • Máy chủ đồng thời
  • Bài thực hành

Thông tin liên lạc giữa quy trình

  • Các phương pháp IPC
  • IPC POSIX
  • IPC System V **
  • Bài thực hành

Bộ nhớ chia sẻ

  • Bộ nhớ chia sẻ là gì?
  • Bộ nhớ chia sẻ POSIX
  • Bộ nhớ chia sẻ System V **
  • Bài thực hành

Semaphore

  • Semaphore là gì?
  • Semaphore POSIX
  • Semaphore System V **
  • Bài thực hành

Hang đợi thông điệp

  • Hang đợi thông điệp là gì?
  • Hang đợi thông điệp POSIX
  • Hang đợi thông điệp System V **
  • Bài thực hành

Yêu cầu

Khóa học này dành cho các nhà phát triển có kinh nghiệm. Học viên nên thành thạo lập trình C và quen thuộc với các tiện ích cơ bản và trình soạn thảo văn bản của Linux.

Đối tượng

Khóa học này dành cho các nhà phát triển có kinh nghiệm. Học viên nên thành thạo lập trình C và quen thuộc với các tiện ích cơ bản và trình soạn thảo văn bản của Linux.

Mức độ kinh nghiệm: Trung cấp

 28 Giờ học

Số người tham gia


Giá cho mỗi người tham gia

Các khóa học sắp tới

Các danh mục liên quan