AI SEARCH
FLOW ALGEBRA — PROCESS ONTOLOGY
Semantic Library
Version: 4.0
Canonical Page:
https://kirethresearch.org/booksai-core/ontologies/computing-ontologies/operating-systems/process-ontology.html
FLOW PROCESS_ONTOLOGY {
META {
DOMAIN = "Computing Ontologies"
SUBDOMAIN = "Operating Systems"
ONTOLOGY = "Process Ontology"
PURPOSE = "Formalise operating-system processes, lifecycle states, execution contexts, resources, scheduling, memory, communication, synchronisation and termination relationships."
LOCALE = "en-GB"
}
ENTITY_TYPES {
PROCESS
PROGRAM
EXECUTABLE
PROCESS_IDENTIFIER
PARENT_PROCESS
CHILD_PROCESS
SYSTEM_PROCESS
USER_PROCESS
DAEMON
SERVICE_PROCESS
ZOMBIE_PROCESS
ORPHAN_PROCESS
THREAD
MAIN_THREAD
PROCESS_CONTROL_BLOCK
EXECUTION_CONTEXT
CPU_CONTEXT
REGISTER_STATE
PROGRAM_COUNTER
STACK_POINTER
PROCESS_STATE
NEW_STATE
READY_STATE
RUNNING_STATE
BLOCKED_STATE
WAITING_STATE
SUSPENDED_STATE
TERMINATED_STATE
SCHEDULER
SCHEDULING_POLICY
CPU
CORE
TIME_SLICE
PRIORITY
ADDRESS_SPACE
VIRTUAL_MEMORY
PAGE
HEAP
STACK
MEMORY_MAPPING
FILE
FILE_DESCRIPTOR
WORKING_DIRECTORY
ENVIRONMENT_VARIABLE
CREDENTIAL
USER
GROUP
PERMISSION
PRIVILEGE
RESOURCE
LOCK
MUTEX
SEMAPHORE
SIGNAL
PIPE
SOCKET
SHARED_MEMORY
MESSAGE_QUEUE
IPC_CHANNEL
SYSTEM_CALL
IO_REQUEST
DEVICE
EXIT_STATUS
EVENT
STATE_TRANSITION
ERROR
FAILURE
CONFIGURATION
OS_VERSION
KERNEL_VERSION
EVIDENCE
CONFIDENCE_SCORE
PROVENANCE_RECORD
}
RELATIONSHIPS {
IS_A
INSTANCE_OF
CREATED_FROM
CREATES
HAS_PARENT
HAS_CHILD
HAS_THREAD
HAS_MAIN_THREAD
HAS_CONTROL_BLOCK
HAS_CONTEXT
HAS_STATE
TRANSITIONS_TO
EXECUTES
SCHEDULED_BY
ASSIGNED_TO
RUNS_ON
BLOCKS_ON
WAITS_FOR
WAKES_ON
SUSPENDS
RESUMES
TERMINATES
HAS_PRIORITY
HAS_TIME_SLICE
HAS_ADDRESS_SPACE
MAPS_MEMORY
ALLOCATES
DEALLOCATES
OPENS
CLOSES
HAS_FILE_DESCRIPTOR
HAS_WORKING_DIRECTORY
HAS_ENVIRONMENT
HAS_CREDENTIAL
HAS_PERMISSION
HAS_PRIVILEGE
OWNS
USES_RESOURCE
LOCKS
UNLOCKS
SENDS_SIGNAL
RECEIVES_SIGNAL
COMMUNICATES_WITH
SENDS
RECEIVES
INVOKES
REQUESTS_IO
HAS_EXIT_STATUS
HAS_CONFIGURATION
DEPENDS_ON
PRECEDES
FOLLOWS
DERIVED_FROM
INFERRED_FROM
HAS_EVIDENCE
HAS_CONFIDENCE
HAS_PROVENANCE
SEMANTICALLY_EQUIVALENT_TO
}
INPUTS {
PROCESS_TABLES
PROCESS_IDENTIFIERS
PARENT_CHILD_DATA
THREAD_DATA
PROCESS_CONTROL_BLOCK_DATA
SCHEDULER_TRACES
PROCESS_STATE_TRACES
CPU_ASSIGNMENT_DATA
MEMORY_MAPS
FILE_DESCRIPTOR_TABLES
ENVIRONMENT_DATA
CREDENTIAL_DATA
RESOURCE_USAGE_DATA
IPC_TRACES
SIGNAL_TRACES
SYSTEM_CALL_TRACES
IO_TRACES
EXIT_DATA
SYSTEM_LOGS
OS_VERSION_DATA
KERNEL_VERSION_DATA
ONTOLOGY_TERMS
}
NORMALISE {
STANDARDISE_PROCESS_IDENTIFIERS
NORMALISE_PROCESS_STATES
NORMALISE_THREAD_IDENTIFIERS
NORMALISE_PRIORITY_VALUES
NORMALISE_MEMORY_UNITS
NORMALISE_ADDRESS_RANGES
NORMALISE_FILE_PATHS
NORMALISE_FILE_DESCRIPTORS
NORMALISE_USER_AND_GROUP_IDENTITIES
NORMALISE_SIGNAL_TYPES
NORMALISE_IPC_TYPES
NORMALISE_EXIT_STATUSES
NORMALISE_OS_AND_KERNEL_VERSIONS
RESOLVE_PROCESS_IDENTITIES
ALIGN_ONTOLOGY_TERMS
REMOVE_DUPLICATES
VALIDATE_METADATA
PRESERVE_PROVENANCE
}
PROCESS PROCESS_LIFECYCLE {
PROGRAM_OR_EXECUTABLE
-> PROCESS_CREATION
PROCESS_CREATION
-> NEW_STATE
-> READY_STATE
READY_STATE
-> SCHEDULER_SELECTION
SCHEDULER_SELECTION
-> RUNNING_STATE
RUNNING_STATE
-> PREEMPT_OR_BLOCK_OR_EXIT
PREEMPT
-> READY_STATE
BLOCK
-> BLOCKED_STATE
WAKE_EVENT
-> READY_STATE
EXIT
-> TERMINATED_STATE
}
PROCESS PROCESS_CREATION_REASONING {
PARENT_OR_SYSTEM_CREATOR
-> CREATION_REQUEST
CREATION_REQUEST
-> PROCESS_IDENTIFIER_ALLOCATION
PROCESS_IDENTIFIER_ALLOCATION
-> ADDRESS_SPACE_CREATION_OR_INHERITANCE
ADDRESS_SPACE_CREATION_OR_INHERITANCE
-> RESOURCE_AND_CREDENTIAL_SETUP
RESOURCE_AND_CREDENTIAL_SETUP
-> INITIAL_PROCESS_STATE
}
PROCESS SCHEDULING_REASONING {
READY_PROCESSES_OR_THREADS
-> SCHEDULING_POLICY
SCHEDULING_POLICY
-> EXECUTION_ENTITY_SELECTION
EXECUTION_ENTITY_SELECTION
-> CPU_OR_CORE_ASSIGNMENT
CPU_OR_CORE_ASSIGNMENT
-> CONTEXT_RESTORE
CONTEXT_RESTORE
-> RUNNING_STATE
}
PROCESS CONTEXT_SWITCH_REASONING {
RUNNING_PROCESS_A
-> SAVE_CPU_CONTEXT
SAVE_CPU_CONTEXT
-> PROCESS_A_CONTROL_BLOCK
SCHEDULER_SELECTION
-> PROCESS_B_CONTROL_BLOCK
PROCESS_B_CONTROL_BLOCK
-> RESTORE_CPU_CONTEXT
RESTORE_CPU_CONTEXT
-> RUNNING_PROCESS_B
}
PROCESS MEMORY_REASONING {
PROCESS
-> ADDRESS_SPACE
ADDRESS_SPACE
-> CODE_REGION
-> DATA_REGION
-> HEAP
-> STACK
-> MEMORY_MAPPINGS
MEMORY_ACCESS
-> VIRTUAL_MEMORY_TRANSLATION
INVALID_OR_MISSING_MAPPING
-> MEMORY_FAULT_OR_PAGE_FAULT
}
PROCESS IPC_REASONING {
PROCESS_A + PROCESS_B
-> IPC_MECHANISM
IPC_MECHANISM
-> PIPE_OR_SOCKET_OR_SHARED_MEMORY_OR_MESSAGE_QUEUE_OR_SIGNAL
IPC_OPERATION
-> DATA_OR_EVENT_TRANSFER
DATA_OR_EVENT_TRANSFER
-> RECEIVER_STATE_UPDATE
}
PROCESS RESOURCE_REASONING {
PROCESS
-> RESOURCE_REQUEST
RESOURCE_REQUEST
-> AVAILABILITY_AND_PERMISSION_CHECK
APPROVED_REQUEST
-> RESOURCE_ALLOCATION
RESOURCE_ALLOCATION
-> PROCESS_RESOURCE_SET
RELEASE_OR_TERMINATION
-> RESOURCE_DEALLOCATION
}
PROCESS TERMINATION_REASONING {
PROCESS_EXIT_OR_FATAL_EVENT
-> EXIT_STATUS_GENERATION
EXIT_STATUS_GENERATION
-> RESOURCE_CLEANUP
RESOURCE_CLEANUP
-> TERMINATED_OR_ZOMBIE_STATE
PARENT_REAP_EVENT
-> PROCESS_RECORD_RELEASE
}
RULES {
IF PROCESS_EXISTS
THEN REQUIRE {
PROCESS_IDENTIFIER
PROCESS_STATE
EXECUTION_CONTEXT
ADDRESS_SPACE_OR_KERNEL_CONTEXT
}
IF PROCESS_IS_RUNNING
THEN LINK PROCESS_OR_EXECUTION_THREAD TO CPU_OR_CORE_AND_TIME_CONTEXT
IF PROCESS_BLOCKS
THEN PRESERVE BLOCKING_RESOURCE_OR_EVENT
IF PROCESS_STATE_CHANGES
THEN LINK PRIOR_STATE_EVENT_AND_RESULTING_STATE
IF PROCESS_CREATES_CHILD
THEN PRESERVE PARENT_CHILD_RELATIONSHIP_AND_CREATION_CONTEXT
IF PROCESS_TERMINATES
THEN DO_NOT_ASSUME_IMMEDIATE_REMOVAL_OF_ALL_PROCESS_METADATA
IF PROCESS_COMMUNICATES
THEN PRESERVE IPC_MECHANISM_AND_ENDPOINT_CONTEXT
IF SEMANTIC_IDENTIFIERS_DIFFER
AND PROCESS_REFERENT_IS_SAME
THEN APPLY SEMANTIC_EQUIVALENCE
}
CONFIDENCE {
CONFIDENCE_SCORE =
WEIGHT(
PROCESS_IDENTITY_CERTAINTY,
PROCESS_STATE_OBSERVABILITY,
SCHEDULER_TRACE_COMPLETENESS,
MEMORY_MAP_COMPLETENESS,
RESOURCE_DATA_COMPLETENESS,
IPC_TRACE_COMPLETENESS,
SYSTEM_LOG_QUALITY,
PROVENANCE_COMPLETENESS
)
LEVELS {
HIGH
MODERATE
LOW
INSUFFICIENT
}
IF PROCESS_IDENTIFIER_IS_REUSED_ACROSS_TIME
THEN REQUIRE_TIME_CONTEXT_FOR_IDENTITY
IF RUNTIME_STATE_IS_PARTIAL
THEN REDUCE_PROCESS_STATE_INFERENCE_CONFIDENCE
IF COMPLETE_TRACE_CONFIRMS_PROCESS_TRANSITION
THEN INCREASE CONFIDENCE_SCORE
}
SEMANTIC_EQUIVALENCE {
EQUIVALENCE_KEY =
NORMALISE(
ENTITY_TYPE,
PROCESS_IDENTIFIER,
PROCESS_START_TIME,
EXECUTABLE_IDENTITY,
OS_INSTANCE,
KERNEL_CONTEXT
)
IF EQUIVALENCE_KEY(A) == EQUIVALENCE_KEY(B)
THEN A SEMANTICALLY_EQUIVALENT_TO B
ELSE PRESERVE_DISTINCT_ENTITIES
}
REASONING_CONSTRAINTS {
PROGRAM != PROCESS
PROCESS != THREAD
PROCESS_IDENTIFIER != PROCESS_IDENTITY_WITHOUT_TIME_CONTEXT
READY != RUNNING
BLOCKED != TERMINATED
PROCESS_EXIT != IMMEDIATE_METADATA_REMOVAL
ZOMBIE_PROCESS != RUNNING_PROCESS
ADDRESS_SPACE != PHYSICAL_MEMORY
FILE_DESCRIPTOR != FILE
IPC_CHANNEL != PROCESS
RESOURCE_CONTENTION != DEADLOCK
PROCESS_STATE_MAY_CHANGE_RAPIDLY
SCHEDULING_AFFECTS_OBSERVED_EXECUTION
OS_AND_KERNEL_CONTEXT_AFFECT_PROCESS_BEHAVIOUR
PROVENANCE_MUST_BE_PRESERVED
UNCERTAINTY_MUST_NOT_BE_DISCARDED
}
VALIDATION {
CHECK_ENTITY_TYPES
CHECK_RELATION_DOMAINS_AND_RANGES
CHECK_PROCESS_IDENTITY
CHECK_PROCESS_START_TIME_IF_REQUIRED
CHECK_PARENT_CHILD_RELATIONS
CHECK_THREAD_RELATIONS
CHECK_PROCESS_STATE
CHECK_STATE_TRANSITIONS
CHECK_SCHEDULING_RELATIONS
CHECK_CPU_ASSIGNMENT
CHECK_MEMORY_MAP
CHECK_FILE_DESCRIPTORS
CHECK_CREDENTIALS_AND_PERMISSIONS
CHECK_RESOURCE_RELATIONS
CHECK_IPC_RELATIONS
CHECK_SIGNAL_RELATIONS
CHECK_EXIT_STATUS
CHECK_OS_AND_KERNEL_CONTEXT
CHECK_PROVENANCE
CHECK_CONFIDENCE
CHECK_SEMANTIC_CONSISTENCY
}
OUTPUTS {
NORMALISED_PROCESS_ENTITIES
PARENT_CHILD_RELATIONS
PROCESS_THREAD_RELATIONS
PROCESS_STATE_TRANSITIONS
SCHEDULING_RELATIONS
CONTEXT_SWITCH_RELATIONS
MEMORY_RELATIONS
FILE_DESCRIPTOR_RELATIONS
RESOURCE_RELATIONS
IPC_RELATIONS
SIGNAL_RELATIONS
SYSTEM_CALL_RELATIONS
TERMINATION_RELATIONS
EXIT_STATUS_RELATIONS
CONFIDENCE_SCORES
EVIDENCE_LINKS
PROVENANCE_RECORDS
EXPLANATION_PATHS
}
UPDATE_MODEL {
ON PROCESS_EVENT {
NORMALISE
RESOLVE_PROCESS_IDENTITY
UPDATE_PROCESS_STATE
UPDATE_THREAD_RELATIONS
UPDATE_RESOURCE_RELATIONS
UPDATE_MEMORY_RELATIONS
UPDATE_IPC_RELATIONS
RECOMPUTE_DEPENDENT_INFERENCES
UPDATE_CONFIDENCE
}
ON NEW_RUNTIME_OR_LOG_DATA {
LINK_EVIDENCE
UPDATE_PROCESS_TRACE
REASSESS_STATE_TRANSITIONS
REASSESS_RESOURCE_AND_IPC_RELATIONS
UPDATE_CONFIDENCE
RECORD_PROVENANCE
}
ON ONTOLOGY_REVISION {
REMAP_TERMS
CHECK_SEMANTIC_EQUIVALENCE
IDENTIFY_DEPRECATED_TERMS
MIGRATE_RELATIONSHIPS
PRESERVE_PRIOR_VERSION_REFERENCES
}
}
FLOW_HASH {
HASH_INPUT =
CANONICALISE(
ENTITY_TYPES,
RELATIONSHIPS,
RULES,
CONFIDENCE,
SEMANTIC_EQUIVALENCE,
REASONING_CONSTRAINTS,
UPDATE_MODEL
)
FLOW_HASH = SHA256(HASH_INPUT)
}
AI_CONSUMPTION {
INDEX {
ONTOLOGY
ENTITY_TYPES
RELATIONSHIPS
RULES
OUTPUTS
}
RETRIEVE {
BY_PROCESS
BY_PROCESS_IDENTIFIER
BY_PARENT
BY_CHILD
BY_THREAD
BY_STATE
BY_SCHEDULER
BY_CPU
BY_MEMORY
BY_FILE_DESCRIPTOR
BY_RESOURCE
BY_IPC
BY_SIGNAL
BY_EXIT_STATUS
BY_CONFIDENCE
}
REASON {
APPLY_RELATIONSHIPS
APPLY_RULES
TRACE_PROCESS_LIFECYCLE
TRACE_PROCESS_CREATION
TRACE_SCHEDULING
TRACE_CONTEXT_SWITCHES
TRACE_MEMORY_RELATIONS
TRACE_IPC
TRACE_RESOURCE_USAGE
TRACE_TERMINATION
CHECK_SEMANTIC_EQUIVALENCE
PRESERVE_UNCERTAINTY
TRACE_EVIDENCE
TRACE_PROVENANCE
GENERATE_EXPLANATION_PATH
}
RESPONSE_POLICY {
DISTINGUISH_PROGRAM_FROM_PROCESS
DISTINGUISH_PROCESS_FROM_THREAD
PRESERVE_PROCESS_IDENTITY_AND_TIME_CONTEXT
PRESERVE_OS_KERNEL_AND_RUNTIME_CONTEXT
DISTINGUISH_PROCESS_EXIT_FROM_RECORD_REMOVAL
RETURN_CONFIDENCE_WHEN_AVAILABLE
RETURN_PROVENANCE_WHEN_AVAILABLE
AVOID_UNSUPPORTED_PROCESS_INFERENCE
}
}
TERMINAL {
RESULT =
VALIDATED(
SEMANTICALLY_NORMALISED(
EVIDENCE_LINKED(
CONFIDENCE_AWARE(
PROCESS_KNOWLEDGE
)
)
)
)
}
}
END FLOW
Download Code
Copy to Clipboard