Skip to Content
For Enterprise
For Government
For Higher Ed
For Individuals
For Marketing
For Enterprise
For Government
For Higher Ed
For Individuals
For Marketing
Explore Skills
Cloud Computing
Microsoft Azure
Amazon Web Services (AWS)
Google Cloud
Cloud Migration
Cloud Deployment
Cloud Platforms
Data Engineering
Data Warehouse
SQL
Apache Spark
Microsoft SQL Server
MySQL
Kafka
Data Lake
Streaming & Messaging
NoSQL Databases
Relational Databases
Data Science
Pandas
R
MATLAB
SAS
D3
Power BI
Tableau
Statistics
Exploratory Data Analysis
Data Visualization
AI & ML
Generative AI
Machine Learning
Artificial Intelligence (AI)
Deep Learning
Reinforcement Learning
Natural Language Processing
TensorFlow
Scikit-Learn
Hyperparameter Tuning
MLOps
Programming Languages
Java
JavaScript
Spring
Python
Go
C#
C++
C
Swift
Rust
Functional Programming
Software Architecture
Object-Oriented
Distributed Systems
Domain-Driven Design
Architectural Patterns
IT/Ops
Kubernetes
Docker
GitHub
Terraform
Continuous Delivery
Continuous Integration
Database Administration
Computer Networking
Operating Systems
IT Certifications
Security
Network Security
Application Security
Incident Response
Zero Trust Model
Disaster Recovery
Penetration Testing / Ethical Hacking
Governance
Malware
Security Architecture
Security Engineering
Security Certifications
Design
Web Design
Graphic Design
Interaction Design
Film & Video
User Experience (UX)
Design Process
Design Tools
Business
Agile
Project Management
Product Management
Marketing
Human Resources
Finance
Team Management
Business Strategy
Digital Transformation
Organizational Leadership
Soft Skills
Professional Communication
Emotional Intelligence
Presentation Skills
Innovation
Critical Thinking
Public Speaking
Collaboration
Personal Productivity
Confidence / Motivation
Features
All features
Verifiable skills
AI Academy
Courses
Certifications
Interactive learning
Live events
Superstreams
Answers
Insights reporting
Radar Blog
Buy Courses
Plans
Sign In
Try Now
O'Reilly Platform
book
LINUX系統程式設計 第二版
by
Robert Love
December 2013
Intermediate to advanced
496 pages
8h 57m
Chinese
GoTop Information, Inc.
Content preview from
LINUX系統程式設計 第二版
進階檔案
I/O
|
133
一般情況下,
Unix
之寫入操作是同步進行但非同步化的;而讀取操作則是同步進行且同
步化的。
4
對寫入操作而言,這些特點的每個組合是可能的,如表
4-1
所示。
表
4-1
寫入操作同步狀態
同步化
非同步化
同步
寫入操作會等到資料出清至磁碟才返回。如
果檔案開啟期間有指定
O_SYNC
,便會表現此
行為。
寫入操作會等到資料被存入核心緩衝區才返
回。這是平常的行為模式。
非同步
寫入操作會在寫入要求被排入佇列後返回。
等到該寫入操作執行時,資料保證會被寫入
磁碟。
寫入操作會在寫入要求被排入佇列後返回。
等到該寫入操作實際執行時,資料保證至少
會被存入核心緩衝區。
讀取操作始終是同步化的,因為讀取舊資料是毫無意義的。然而,如表
4-2
所示,此類
操作可以是同步的或非同步的。
表
4-2
讀取操作同步狀態
同步化
同步
讀取操作會在最新的資料被存入所提供的緩衝區返回(這是平常的行為模式)。
非同步
讀取操作會在讀取要求被排入佇列後返回,但是當讀取操作實際執行時,會傳回最新的資料。
第
2
章中,我們有討論過如何對寫入操作進行同步化(經由
O_SYNC
旗標),以及如何確
保所有的
I/O
在特定的時間點上已經同步化(經由
fsync()
與相關的函式)。現在,讓我
們來看看如何才能進行非同步的讀取與寫入操作。
非同步
I/O
進行非同步
I/O
需要核心在非常低的層次有所支援。幸好
Linux
有實作
POSIX 1003.1-
2003
所定義的
aio
介面。
aio
程式庫提供了一系列函式,以便提交非同步
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial
You might also like
優雅的SciPy|Python科學研究的美學
Juan Nunez-Iglesias, Stéfan van der Walt, Harriet Dashnow
成為卓越程式設計師的38項必修法則
Pete Goodliffe
深入理解運算原理|從簡單的機器到無所不能的程式
Tom Stuart
C++语言导学(原书第2版)
本贾尼 斯特劳斯特鲁普
Publisher Resources
ISBN: 9789862769812